单Nginx服务器共享端口部署双网站:beta域名访问返回alpha内容的虚拟主机配置求助
Nginx服务器共享端口部署双网站:beta域名访问返回alpha内容的虚拟主机配置求助
兄弟,我看了你遇到的问题,这在Nginx虚拟主机配置里属于高频踩坑点,咱一步步来排查解决:
先抓最明显的拼写错误!
你贴的beta配置里写的是server_nam...,这明显是server_name少打了字符!Nginx如果识别不到正确的server_name,会把这个请求默认丢给第一个加载的虚拟主机配置(也就是你的alpha),这就是为啥访问beta会返回alpha内容的核心原因。修正后的beta基础配置示例
先把beta的配置补全正确:server { listen 80; listen [::]:80; server_name beta.com www.beta.com; # 如果你也想跳转到HTTPS,和alpha配置保持一致即可 return 302 https://$server_name$request_uri; root /var/www/html/beta.com; index index.html index.htm; }必做的配置验证步骤
- 检查软链接是否正确:执行
ls -l /etc/nginx/sites-enabled/,确认beta的软链确实指向/etc/nginx/sites-available/beta,别手动创建时打错路径 - 验证配置语法合法性:每次改完配置都要跑
sudo nginx -t,如果有语法错误(比如刚才的拼写问题),Nginx会直接抛出错误提示,这时候配置不会生效 - 重载Nginx配置:改完配置一定要执行
sudo systemctl reload nginx,不然Nginx还是用旧的配置,等于白改
- 检查软链接是否正确:执行
额外的排查小技巧
要是还不确定请求走的哪个配置块,可以给每个虚拟主机加独立的访问日志:
在alpha的server块里加access_log /var/log/nginx/alpha_access.log;,beta的server块里加access_log /var/log/nginx/beta_access.log;,访问beta域名后查看日志,就能明确请求是不是走到了beta的配置里。小细节优化(非紧急)
你的alpha配置里,return 302语句在root和index前面,其实return会直接返回跳转,后面的root这些根本不会执行,虽然不影响功能,但建议把root、index这些配置放到HTTPS的server块里(如果后续要配置HTTPS的话)。
备注:内容来源于stack exchange,提问作者KLR
相关产品推荐
相关产品推荐

