Nginx 配置 HTTPS:免费 SSL 证书全流程指南

2025.5.29 杂七杂八 1019

Nginx 配置 HTTPS:免费 SSL 证书全流程指南 杂七杂八-第1张

本文详细介绍如何为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;

五、常见问题排查

  1. 证书不生效:检查Nginx错误日志/var/log/nginx/error.log
  2. 混合内容警告:确保网页内所有资源使用HTTPS链接
  3. 续期失败:确认服务器时间准确且80/443端口未被占用

评论