本文详细介绍如何为Nginx服务器配置HTTPS并申请免费SSL证书(以Let’s Encrypt为例),涵盖证书申请、Nginx配置优化及常见问题排查,帮助用户快速实现网站加密,提升安全性与SEO排名。
一、为什么需要为Nginx配置HTTPS?
HTTPS通过SSL/TLS协议加密数据传输,能有效防止中间人攻击,同时:
- 提升搜索引擎排名(Google明确将HTTPS作为排名因素)
- 满足现代浏览器安全要求(如Chrome标记HTTP站点为”不安全”)
- 保障用户隐私数据安全
二、免费SSL证书选择
推荐使用Let’s Encrypt证书,优势包括:
- 完全免费且自动续期
- 被所有主流浏览器信任
- 支持通配符证书(需使用DNS验证)
三、实战配置流程
1. 安装Certbot工具
Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx
CentOS/RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
2. 获取SSL证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按提示完成域名验证后,证书会自动保存到/etc/letsencrypt/live/yourdomain.com/
3. Nginx配置示例
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
启用TLS 1.3
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
其他配置...
}
HTTP强制跳转HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
4. 配置自动续期
sudo crontab -e
添加以下内容(每天凌晨检查续期)
0 0 /usr/bin/certbot renew --quiet
四、高级优化建议
- OCSP Stapling:减少SSL握手时间
ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
- HSTS头:强制浏览器使用HTTPS
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
五、常见问题排查
- 证书不生效:检查Nginx错误日志
/var/log/nginx/error.log
- 混合内容警告:确保网页内所有资源使用HTTPS链接
- 续期失败:确认服务器时间准确且80/443端口未被占用
评论