Nginx 返回 301 重定向所有域名

Nginx 返回 301 重定向所有域名

我的服务器上有多个运行 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;

相关内容