多域名反向代理场景下NGINX HTTP转HTTPS重定向失败排查
解决NGINX端口80绑定失败及HTTP转HTTPS重定向问题
一、排查端口80占用情况
执行以下命令确认端口80的占用进程:
ss -tulpn | grep :80
或
netstat -tulpn | grep :80
- 若输出显示非NGINX进程占用80,停止对应进程或修改其监听端口。
- 若为NGINX自身占用,检查默认配置文件(如
/etc/nginx/sites-enabled/default)或其他引入的配置片段,排查是否存在未发现的listen 80配置块。
二、配置HTTP转HTTPS重定向
方案1:分域名独立配置(精准控制)
给每个站点添加对应的80端口server块,放在现有HTTPS server块之前:
# website1 重定向 server { listen 80; server_name website1; return 301 https://$host$request_uri; } # website2 重定向 server { listen 80; server_name website2; return 301 https://$host$request_uri; } # website3 重定向 server { listen 80; server_name website3; return 301 https://$host$request_uri; }
方案2:通用重定向(简洁高效)
用单个server块处理所有80端口请求,自动匹配对应域名跳转:
server { listen 80 default_server; server_name _; # 匹配所有访问80的域名 return 301 https://$host$request_uri; }
三、修复现有配置的隐性错误
检查你提供的配置,存在两处可能导致NGINX启动异常的问题:
- website1证书路径不完整:
原配置中ssl_certificate /etc/letsencrypt/live/website1_ssl缺少证书文件名,应修正为:ssl_certificate /etc/letsencrypt/live/website1_ssl/fullchain.pem; - website2证书路径错误:
原配置中website2使用了website1的证书路径,应替换为website2自身的证书路径:ssl_certificate /etc/letsencrypt/live/website2/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/website2/privkey.pem;
四、验证并重启NGINX
- 先验证配置语法正确性:
nginx -t
- 若测试通过,重启NGINX:
systemctl restart nginx
(非systemd系统可使用service nginx restart)
内容的提问来源于stack exchange,提问作者Andrew Simpson
相关产品推荐
相关产品推荐

