nginx配置为https(支持 ssl/tls 加密)
步骤 1:获取 ssl证书
你可以选择使用 let's encrypt 提供的免费 ssl 证书,或者购买其他 ca(证书颁发机构)提供的证书。以 let's encrypt 为例:
使用 let's encrypt 获取免费证书
- 安装 certbot(let's encrypt 官方工具):
- sudo yum install epel-release -y
- sudo yum install certbot python3-certbot-nginx -y
- 获取 ssl 证书:
假设你有一个域名(例如 your_domain.com)并且已经配置了该域名指向你的服务器 ip。
运行以下命令来请求证书:
sudo certbot --nginx -d your_domain.com
certbot 会自动生成证书并配置 nginx,使其支持 https。如果配置成功,certbot 会自动更新你的 nginx 配置文件,将 http 重定向到 https。
手动获取 ssl 证书
如果你购买了 ssl 证书,通常证书提供商会提供 .crt 和 .key 文件。你需要将这些文件上传到服务器。
- 证书文件(例如 your_domain.crt)
- 私钥文件(例如 your_domain.key)
步骤 2:配置 nginx使用 ssl证书
如果你使用 certbot,nginx 配置会自动更新,但如果你手动配置 ssl,请按照以下步骤进行:
备份原始的 nginx 配置文件:
在进行修改之前,备份你的 nginx 配置文件以防万一:sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
编辑 nginx 配置文件:
打开你的站点配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/。
sudo vi /etc/nginx/nginx.conf
如果你使用了 certbot,nginx 的 ssl 配置可能已经完成。如果是手动配置,添加以下 ssl 配置:
server {
listen 80;
server_name your_domain.com www.your_domain.com;
# 301 重定向 http 到 https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
# ssl 配置
ssl_certificate /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
ssl_session_cache shared:ssl:1m;
ssl_session_timeout 5m;
# 强制使用最新的 ssl 协议
ssl_protocols tlsv1.2 tlsv1.3;
ssl_ciphers 'ecdhe-ecdsa-aes128-gcm-sha256:ecdhe-rsa-aes128-gcm-sha256:...';
ssl_prefer_server_ciphers on;
# 其他配置
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}- ssl_certificate:你的 ssl 证书 文件路径。
- ssl_certificate_key:你的 ssl 私钥 文件路径。
- ssl_protocols:配置支持的 ssl/tls 协议。
- ssl_ciphers:设置强加密的密码套件。
测试 nginx 配置:
在重新加载 nginx 之前,先测试配置文件是否正确:
sudo nginx -t
如果显示 syntax is ok,表示配置没有问题。
重新加载 nginx:
重新加载 nginx 配置以应用更改:
sudo systemctl reload nginx
步骤 3:自动更新 ssl证书(如果使用 let's encrypt)
如果你使用的是 let's encrypt,你可以通过 certbot 自动更新证书。certbot 默认会设置自动续期,证书将在到期前自动更新。
可以通过以下命令手动测试自动续期:
sudo certbot renew --dry-run
步骤 4:确保防火墙允许 https流量
确保 443 端口(https)已经打开,并且防火墙允许该端口的流量。你可以使用以下命令查看防火墙规则,并允许 443 端口:
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --reload
步骤 5:访问 https
现在,你可以通过 https://your_domain.com 来访问你的网站。如果一切配置正确,访问时会看到一个安全的 https 连接。
总结
到此这篇关于nginx配置为https的文章就介绍到这了,更多相关nginx配置为https内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论