Ubuntu 配置用 Nginx 配置 HTTPS 的步骤
1. 生成自签名证书
如果你只是测试或在内网使用,没有域名,可以生成一个自签名证书。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nginx-selfsigned.key \
-out /etc/ssl/certs/nginx-selfsigned.crt
在生成证书时,会要求输入一些信息(比如国家、组织名等),可以随意填写。
2. 创建强加密 Diffie-Hellman 密钥
为了提升安全性,建议生成一个 Diffie-Hellman 参数文件:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
3. 配置 Nginx 支持 HTTPS
修改你的 Nginx 配置文件,添加以下内容(基于你当前的配置):
http {
server {
listen 80;
server_name 192.168.10.128;
# 将 HTTP 重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name 192.168.10.128;
# 自签名证书路径
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
# DH 参数文件
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 配置代理
location / {
proxy_pass http://192.168.0.33:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
4. 重启 Nginx
保存配置文件后,测试并重启 Nginx:
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
5. 验证 HTTPS 配置
访问 https://192.168.10.128,确认 HTTPS 正常工作。如果是自签名证书,浏览器会提示证书不受信任,点击继续访问即可。
如果使用 Let’s Encrypt
如果你可以为这个地址绑定一个域名,可以使用 Let’s Encrypt 的 Certbot 工具来获取免费证书,替换掉上面的自签名证书配置。具体参考我之前提到的步骤。
这样,你的服务应该可以通过 HTTPS 访问了。