Nginx 配置 HTTPS 只要5分钟
别整那些花里胡哨的,直接开干。假设你已经装了 Nginx,域名解析也配好了。

第一步:搞到证书
最快方案:Let’s Encrypt + certbot
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo yum install certbot python3-certbot-nginx
# 直接签发
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
等30秒,证书自动配好,HTTPS直接能用。certbot 还会自动续期,省心。
手动方案(自己签或者买商业证书)
把证书文件扔到服务器,比如 /etc/nginx/ssl/ 目录下:
– yourdomain.com.crt — 证书文件
– yourdomain.com.key — 私钥
第二步:配置 Nginx
完整配置模板,直接复制改域名
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
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;
# 安全配置(抄就完了)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# 根目录和反向代理按需改
root /var/www/yourdomain;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
# 如果是反向代理,注释上面这行,用下面这个
# proxy_pass http://127.0.0.1:3000;
}
}
第三步:检查并重载
# 测试配置语法
sudo nginx -t
# 没问题就重载
sudo systemctl reload nginx
# 或者
sudo nginx -s reload
第四步:验证
浏览器打开 https://yourdomain.com,锁图标亮了就完事。
也可以用命令行:
curl -I https://yourdomain.com
额外收尾
强制 HSTS(可选但推荐)
在 server 块里加一行:
add_header Strict-Transport-Security "max-age=63072000" always;
检查证书到期
# 手动看
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
# certbot 自动续期测试(默认每天跑两次)
sudo certbot renew --dry-run
常见坑
– 防火墙没开 443 端口:sudo ufw allow 443/tcp
– 证书权限问题:私钥文件权限设 600
– 配置文件改完记得 nginx -t 再 reload,别手滑
搞定,前后不超过5分钟。
💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者
