如何在 nginx 上配置:fallback/default 网站

如何在 nginx 上配置:fallback/default 网站

在 Apache 中,如果 1)我有多个虚拟主机监听一个端口,并且 2)如果没有请求与任何虚拟主机匹配,那么第一个虚拟主机将是响应请求的虚拟主机。例如,假设我有这个配置:

<VirtualHost *:8080>
  ServerName www.fallbacksite.com:8080
  ServerAlias *.fallbacksite.com
  # ...
</VirtualHost>

<VirtualHost *:8080>
  ServerName www.specific-site.com:8080
  ServerAlias *.specific-site.com
  # ...
</VirtualHost>

然后:

  • 当有人指定 site.com:8080 时,第二个虚拟主机将回答该请求(这里并不奇怪)
  • 当有人访问 fallbacksite.com:8080 时,第一个虚拟主机将回答请求(这并不奇怪)
  • 当有人访问 hellohowareyou.com:8080(并且 hellohowareyou.com 指向该服务器)时,第一个虚拟主机将响应该请求

这是我尝试使用 nginx 实现的最后一个场景,但在 nginx.org 网站上没有看到任何关于此内容的内容。我尝试了过度通配符,但它抱怨它无效。

如何在 nginx 中完成上述配置?提前致谢!

答案1

如果您只希望特定虚拟主机响应请求,只需执行以下操作即可。添加(或更改)监听行以包含default_server在末尾。这将为该虚拟主机提供服务,而无需更改 URL。

server {
    # Add default_server for any unresolved request
    listen 80 default_server;        
}

如果您想在用户点击时执行重定向,hellohowareyou.com您可以添加新的server块并重定向到您想要使用的主机:

server {
    # Add default_server only here for any unresolved request
    listen 80 default_server;    
    server_name _;
    rewrite ^ http://fallbacksite.com$request_uri permanent;
}

相关内容