如何在nginx上configuration:fallback / default网站

在Apache中,如果1)我有多个虚拟主机侦听一个端口,2)如果没有请求匹配任何虚拟主机,则第一个虚拟主机将是应答请求的虚拟主机 。 例如,给我有这个configuration:

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

然后:

  • 当某人specific-site.com:8080,那么第二个虚拟主机将会回答请求(这里并不令人意外)
  • 当有人访问fallbacksite.com:8080时,那么第一个虚拟主机将回答请求(这里没有意外)
  • 当有人访问hellohowareyou.com:8080(hellohowareyou.com指向服务器),那么第一个虚拟主机将回答请求

这是我试图用nginx实现的最后一个场景,但是在nginx.org网站上看不到任何关于这个的东西。 我尝试了过度渴望的通配符,但它抱怨说这是无效的。

你将如何在nginx中做上述configuration? 提前致谢!

如果你只想要一个特定的虚拟主机来回答请求,你可以简单地做如下操作。 添加(或更改)监听行以在末尾包含default_server 。 这将在不更改URL的情况下为该虚拟主机提供服务。

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

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

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