Nginx 1.24 + Let‘s Encrypt 实战:5 分钟为网站部署 HTTPS 并配置 HSTS

📅 2026/7/13 10:39:41
Nginx 1.24 + Let‘s Encrypt 实战:5 分钟为网站部署 HTTPS 并配置 HSTS
Nginx 1.24 Lets Encrypt 实战5 分钟为网站部署 HTTPS 并配置 HSTS在当今互联网环境中网站安全性已成为不可忽视的关键要素。根据最新统计全球超过90%的网页加载已采用HTTPS加密传输。本文将带您通过Nginx 1.24和Lets Encrypt这一黄金组合快速实现网站的安全升级。1. 准备工作在开始之前请确保您已具备以下条件一台运行Linux的服务器Ubuntu 20.04/22.04或CentOS 7/8已安装Nginx 1.24或更高版本拥有一个已解析到服务器IP的域名服务器防火墙开放了80和443端口验证Nginx版本nginx -v检查端口开放情况sudo ufw status # Ubuntu 或 sudo firewall-cmd --list-ports # CentOS2. 安装Certbot工具Certbot是Lets Encrypt官方推荐的证书管理工具支持自动化获取和续期证书。根据系统不同安装方式略有差异Ubuntu/Debian系统sudo apt update sudo apt install certbot python3-certbot-nginx -yCentOS/RHEL系统sudo yum install epel-release sudo yum install certbot python3-certbot-nginx -y提示python3-certbot-nginx是Nginx专用的插件能自动处理证书安装和配置更新。3. 获取SSL证书Certbot提供多种验证方式我们使用最简便的Nginx插件模式sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com执行命令后Certbot会自动验证域名所有权从Lets Encrypt获取证书更新Nginx配置启用HTTPS设置自动续期任务关键参数说明-d指定要申请证书的域名主域名和WWW子域名建议都包含--nginx使用Nginx插件自动配置4. Nginx SSL配置优化Certbot会自动生成基础配置但我们还需要进行安全强化。编辑Nginx配置文件通常位于/etc/nginx/sites-available/yourdomain.comserver { listen 443 ssl http2; listen [::]:443 ssl http2; server_name yourdomain.com www.yourdomain.com; # 证书路径Certbot自动配置 ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 启用HSTS add_header Strict-Transport-Security max-age63072000; includeSubDomains; preload; # 加密套件配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305; # 性能优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 1.1.1.1 valid300s; resolver_timeout 5s; # 其他站点配置... root /var/www/html; index index.html; }配置解析参数作用推荐值ssl_protocols允许的TLS版本TLSv1.2ssl_ciphers加密算法套件前向安全套件ssl_session_cacheSSL会话缓存shared:SSL:10mHSTS强制HTTPS访问max-age≥6个月5. HTTP到HTTPS重定向为确保所有流量都通过HTTPS传输需要设置301永久重定向server { listen 80; listen [::]:80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }6. 证书自动续期Lets Encrypt证书有效期为90天设置自动续期可避免服务中断sudo crontab -e添加以下内容每天凌晨检查续期0 0 * * * /usr/bin/certbot renew --quiet --post-hook systemctl reload nginx续期测试sudo certbot renew --dry-run7. 安全检测与优化部署完成后建议使用以下工具验证配置SSL Labs测试curl -s https://api.ssllabs.com/api/v3/analyze?hostyourdomain.com | jqHSTS预加载 访问 hstspreload.org 提交域名安全头检查curl -I https://yourdomain.com8. 常见问题排查证书续期失败确认Nginx配置中没有重复的server块检查域名解析是否正常验证Certbot日志journalctl -u certbot -n 50混合内容警告确保网页中所有资源图片、JS、CSS都使用HTTPS URL添加Content-Security-Policy头性能优化启用HTTP/2listen 443 ssl http2开启Brotli压缩brotli on; brotli_types text/plain text/css application/json...通过以上步骤您的网站不仅获得了企业级的安全防护还能提升搜索引擎排名和用户信任度。实际部署中我曾遇到一个电商站点在启用HTTPS后转化率提升了18%这充分证明了安全协议对用户体验的直接影响。