nginx 如何使用 let's encrypt 实现https
要在Nginx中使用Let's Encrypt实现HTTPS,可以按照以下步骤操作:
-
安装Certbot工具
首先需要安装Certbot及其Nginx插件,不同系统的安装命令如下:- 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
- Ubuntu/Debian:
-
申请SSL证书
运行以下命令为你的域名申请证书(替换example.com为你的域名):sudo certbot --nginx -d example.com -d www.example.comCertbot会自动验证域名所有权并生成证书文件,存储在
/etc/letsencrypt/live/example.com/目录下 -
配置Nginx
Certbot通常会自动修改Nginx配置,但你可以手动检查或调整。确保配置文件中包含以下内容:server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; # 强制跳转HTTPS } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; # 推荐仅启用较新协议 # 其他SSL优化参数(如加密套件、HSTS等) location / { root /var/www/html; index index.html; } } -
重启Nginx
应用配置并重启Nginx服务:sudo nginx -t # 测试配置语法 sudo systemctl restart nginx -
自动续期设置
Let's Encrypt证书有效期为90天,Certbot默认会配置自动续期任务。可通过以下命令测试:sudo certbot renew --dry-run如果续期失败,检查定时任务是否正常(如
systemctl status certbot.timer)
注意事项:
- 确保域名已正确解析到服务器IP。
- 防火墙需开放80(HTTP验证)和443(HTTPS)端口
- 若需代理其他服务(如Flask),需在Nginx配置中添加
proxy_pass指向本地端口
浙公网安备 33010602011771号