很多人会错误地配置 default server,就像这样
server_name _;
然而这条指令的真实意思是没有匹配,只有在没有匹配到任何 server_name
的时候才有可能选择它,但是也不一定就会选择它。
Nginx 在没有匹配到的时候会选择第一个 server,因此 server 顺序很重要,如果配置成 _
的 server 不是第一个,那么这个 server 就不会被选择。
由此可以看出,_
不是默认服务器,仅仅是未匹配。
一般来说使用这个配置的服务器是写在 nginx.conf
里面的,而 include
指令写在这个 server 的后面,这样就保证了这个是第一个。
真正的 default server 应该采用如下配置,这样在没有匹配到的时候,不管顺序怎么样,都会选择这个 server。
listen 80 default_server;
参考 https://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server/
网友评论