我的服务器上有多个运行 nginx 的域,设置如下:
server {
listen 80;
server_name domain1.com www.domain1.com;
root /var/www/domain1/public_html;
index index.php index.html index.html;
}
server {
listen 80;
server_name domain2.com www.domain2.com;
return 301 https://plusgoogle.com/+somepage;
}
server {
listen 80;
root /var/www/other_domains/public_html;
index index.php index.html index.html;
}
每个服务器块都在其单独的文件中(domain1.conf、domain2.conf 等)
现在来谈谈问题:
- Domain1 正常运行
- Domain2 - 不幸的是现在无法测试,godaddy 出了点问题,但我很确定它会正常工作。
- 其他域名从 domain2 设置重定向到 301 url
我有点困惑,我可以理解如果 domain2 会加载其他域的根,但是当我在配置中同时指定 server_name 和 301 时,其他域怎么会重定向到 301?
感谢帮助
更新
你确定你的浏览器没有缓存吗- 我尝试在不同的设备上打开网站,我认为核心
这些领域在现实中是否像你上面的例子那样截然不同- 是的,实际上我不明白为什么我不提供域名:domain1 = tomasdostal.com,domain2=autodopravadostal.cz,其他域名= casull.info,forgotmap.com 等。
第二个服务器块配置是否存在于其他任何地方,还是仅存在于此配置文件中- 我正在设置 100% 新的 aws 实例,所以我很确定它只在那里。
答案1
你应该阅读一下 nginx处理请求。
在你的情况下,带有未知域名的请求将落到默认服务器。通常是第一个,但可以是任何服务器。要明确定义默认服务器,您应该default_server
在指令中使用标志listen
。因此,在应该捕获所有其他域的服务器块中,您应该编写:
listen 80 default_server;