You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器Nginx部署双网站异常:访问website2跳至website1并报SSL警告

解决Ubuntu 16.04上Nginx部署两个Node.js站点的问题

看起来你遇到的核心问题是website2无法正常通过HTTPS访问,反而跳转到HTTP并指向website1,咱们一步步来排查解决:

1. 确认Nginx配置已正确启用

Nginx不会自动加载sites-available目录里的配置文件,必须手动创建软链接到sites-enabled目录才能生效:

# 为website2创建软链接(如果还没做的话)
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/
# 检查配置语法是否正确,避免语法错误导致Nginx启动失败
sudo nginx -t
# 重启Nginx让新配置生效
sudo systemctl restart nginx

如果之前没给website2创建软链接,Nginx根本不会加载它的配置规则,所有未匹配的请求都会落到默认站点(刚好是website1),这大概率是你看到跳转至website1的直接原因。

2. 检查SSL证书配置是否正确

访问website2时出现SSL警告,说明证书环节有问题,先做这几项验证:

  • 确认/etc/nginx/ssl/website2.com.domain.crt和/etc/nginx/ssl/website2.com.intermediate.key文件确实存在,并且Nginx进程有权限读取(可以用sudo chmod 644 /etc/nginx/ssl/website2*调整文件权限)
  • 验证证书和密钥是否配对,执行以下命令:
# 提取证书的模数并生成MD5值
openssl x509 -noout -modulus -in /etc/nginx/ssl/website2.com.domain.crt | openssl md5
# 提取密钥的模数并生成MD5值
openssl rsa -noout -modulus -in /etc/nginx/ssl/website2.com.intermediate.key | openssl md5

如果两个命令输出的MD5值不一致,说明证书和密钥不匹配,需要重新获取正确的配对文件。

3. 修正Node.js代理的协议问题

你的配置里proxy_pass用的是https://127.0.0.1:5000,但如果你的Node.js应用是监听HTTP(而非HTTPS)的话,这会导致Nginx和Node应用之间的通信出错,进而引发跳转异常。

大多数场景下,我们会把SSL终止在Nginx层面,Node应用只需要提供HTTP服务。把website2配置里的proxy_pass改成:

proxy_pass http://127.0.0.1:5000;

同时确认Node.js应用确实在监听5000端口:

sudo netstat -tulpn | grep :5000

如果看不到对应进程,先启动website2的Node应用再测试。

4. 清除浏览器缓存

浏览器对301永久重定向会做长期缓存,可能缓存了旧的跳转规则导致异常。可以尝试用隐私窗口访问website2,或者手动清除浏览器缓存后再测试。

5. 检查默认站点配置

如果以上步骤都没问题,检查Nginx的默认站点(/etc/nginx/sites-enabled/default)是否还在启用状态,如果它没有被禁用,可能会干扰站点匹配逻辑。可以禁用它:

sudo unlink /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

按照以上步骤排查后,应该就能解决website2的跳转异常问题,实现两个站点独立正常访问了。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:20:18