Ubuntu Nginx配置HTTPS要注意什么
导读:Ubuntu Nginx配置HTTPS的关键注意事项 1. 证书获取与管理 优先选择免费证书:生产环境推荐使用Let’s Encrypt免费证书(通过Certbot工具获取),支持自动续期,避免证书过期导致服务中断。安装Certbot及N...
Ubuntu Nginx配置HTTPS的关键注意事项
1. 证书获取与管理
- 优先选择免费证书:生产环境推荐使用Let’s Encrypt免费证书(通过Certbot工具获取),支持自动续期,避免证书过期导致服务中断。安装Certbot及Nginx插件后,运行
sudo certbot --nginx -d yourdomain.com
即可自动完成证书申请与Nginx配置。 - 自签名证书仅用于测试:内网或开发环境可使用
openssl req -x509 -nodes -days 365 -newkey rsa:2048
生成自签名证书,但浏览器会提示“不安全”,需手动信任。 - 正确配置证书路径:确保证书文件(
.crt
/.pem
)和私钥文件(.key
)路径正确,避免权限问题(私钥需设置为600
权限)。Let’s Encrypt证书路径通常为/etc/letsencrypt/live/yourdomain.com/
。
2. 强制HTTP跳转HTTPS
- 配置301永久重定向:在监听80端口的
server
块中添加return 301 https://$host$request_uri;
,将所有HTTP请求永久重定向至HTTPS,提升安全性与SEO效果。例如:server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
3. SSL协议与加密套件优化
- 禁用不安全协议:仅启用TLSv1.2及以上版本(TLSv1.3可选),避免SSLv2/3等存在漏洞的协议。配置
ssl_protocols TLSv1.2 TLSv1.3;
。 - 使用强加密套件:选择
ECDHE
(椭圆曲线迪菲-赫尔曼)系列算法,如ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
,兼顾安全性与性能。 - 启用前向保密:添加
ssl_prefer_server_ciphers on;
,确保服务器优先选择加密套件,提升前向保密性。
4. 配置文件语法与重载
- 测试配置有效性:修改Nginx配置后,务必运行
sudo nginx -t
检查语法错误,避免因配置错误导致服务无法启动。 - 优雅重载配置:测试通过后,使用
sudo systemctl reload nginx
重载配置,无需中断现有连接。
5. 安全增强配置
- 隐藏Nginx版本信息:在
/etc/nginx/nginx.conf
的http
块中添加server_tokens off;
,避免响应头中泄露Nginx版本,减少针对性攻击。 - 限制访问频率:在
http
块中添加限流配置(如limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
),防止DDoS或暴力破解。 - 添加安全响应头:在
server
块中添加以下头部,提升安全性:Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
:强制浏览器使用HTTPS(有效期2年);X-Frame-Options "DENY"
:防止页面被嵌入iframe(防范点击劫持)。
6. 日志与故障排查
- 利用日志定位问题:通过
/var/log/nginx/error.log
查看SSL配置错误(如证书过期、私钥不匹配),通过access.log
监控HTTPS访问情况。 - 常见错误解决方法:
- “conflicting server name”:合并相同域名的
server
块或使用301重定向(如将www
指向主域名); - 443端口无响应:检查防火墙是否放行443端口(
sudo ufw allow 443/tcp
)。
- “conflicting server name”:合并相同域名的
7. 自动续期(针对Let’s Encrypt)
- 设置定时任务:Let’s Encrypt证书有效期为90天,需定期续期。运行
sudo certbot renew --dry-run
测试自动续期功能,然后在crontab -e
中添加0 3 * * * /usr/bin/certbot renew --quiet
,每天凌晨3点自动尝试续期。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Nginx配置HTTPS要注意什么
本文地址: https://pptw.com/jishu/728644.html