Debian Nginx配置HTTPS有哪些步骤
导读:Debian 上 Nginx 配置 HTTPS 的标准步骤 按以下顺序执行,可在 Debian 上完成 Nginx 的 HTTPS 启用与优化,涵盖域名解析、证书获取、Nginx 配置、防火墙放行、验证与自动续期。 一 准备与前置条件 准...
Debian 上 Nginx 配置 HTTPS 的标准步骤
按以下顺序执行,可在 Debian 上完成 Nginx 的 HTTPS 启用与优化,涵盖域名解析、证书获取、Nginx 配置、防火墙放行、验证与自动续期。
一 准备与前置条件
- 准备一个已解析到服务器公网 IPv4/IPv6 的域名(如:example.com、www.example.com)。
- 安装 Nginx 并启动服务:
- 命令:
sudo apt update & & sudo apt install nginx -y - 启动与开机自启:
sudo systemctl start nginx & & sudo systemctl enable nginx
- 命令:
- 防火墙放行 HTTP/HTTPS(如使用 UFW):
- 命令:
sudo ufw allow 'Nginx Full'(或分别放行 80/tcp 与 443/tcp)
- 命令:
二 获取并安装 SSL 证书
- 使用 Let’s Encrypt 与 Certbot 获取免费证书并自动配置 Nginx:
- 安装插件:
sudo apt install certbot python3-certbot-nginx - 获取并自动写入 Nginx 配置(同时处理 HTTP→HTTPS 重定向):
sudo certbot --nginx -d example.com -d www.example.com - 证书默认路径:
- 证书链:/etc/letsencrypt/live/example.com/fullchain.pem
- 私钥:/etc/letsencrypt/live/example.com/privkey.pem
- 安装插件:
- 如暂不使用 Certbot,可先准备证书文件(见下一节“手动配置”示例路径)
三 配置 Nginx 站点与强制 HTTPS
- 推荐的 HTTP→HTTPS 与 TLS 基础配置示例(文件通常位于:/etc/nginx/sites-available/example.com):
- 命令:
sudo nano /etc/nginx/sites-available/example.com - 示例:
server { listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; 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_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; # 可选:启用 HSTS(谨慎开启,确认长期可用 HTTPS 后再启用) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; } }
- 命令:
- 启用站点并测试、重载:
- 启用:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ - 语法检查:
sudo nginx -t - 热重载:
sudo systemctl reload nginx
- 启用:
- 说明:
- 使用 Certbot 时可省略手动写入证书路径与重定向,插件会自动修改配置。
- 若需手动管理证书,将证书与私钥路径按上例填写,并确保权限安全(私钥仅对 root 可读)
四 验证与自动续期
- 访问与连通性验证:
- 浏览器访问:https://example.com,确认锁标识与证书有效。
- 命令行验证:
curl -I https://example.com(应返回 HTTP/2 200 等正常头)openssl s_client -connect example.com:443 -servername example.com
- 证书自动续期:
- Let’s Encrypt 证书有效期 90 天,Certbot 默认已配置 systemd 定时续期。
- 手动测试续期:
sudo certbot renew --dry-run(无报错表示续期正常)
五 常见问题与优化建议
- 配置未生效或端口不通:
- 检查语法:
sudo nginx -t - 查看错误日志:
sudo tail -f /var/log/nginx/error.log - 确认防火墙已放行 80/443(如 UFW:sudo ufw allow ‘Nginx Full’)
- 检查语法:
- 安全与性能优化(按需添加):
- 启用 HTTP/2:
listen 443 ssl http2; - 启用 HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - 启用 OCSP Stapling(需解析器):
ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; - 使用 DH 参数:
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;(Certbot 常用路径) - 安全响应头:如 X-Frame-Options、X-Content-Type-Options、X-XSS-Protection 等
- 启用 HTTP/2:
- 自签名证书(仅测试环境):
- 生成:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt - 配置
ssl_certificate与ssl_certificate_key指向上述文件,再sudo nginx -t & & sudo systemctl reload nginx - 注意:自签名证书不被浏览器信任,生产环境请使用受信任 CA(如 Let’s Encrypt)
- 生成:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Nginx配置HTTPS有哪些步骤
本文地址: https://pptw.com/jishu/748038.html
