ngnix - 使用或不使用 IP 地址进行“监听”

ngnix - 使用或不使用 IP 地址进行“监听”

我有一个与 nginx(1.10.0-0ubuntu0.16.04.4)相关的问题。

我设置了一个服务器,如下所示:

server {
    # default

    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;
}

server {
    # domain.foo.bar

    listen 80;
    listen [::]:80;

    listen 443;

    server_name domain.foo.bar;

    # much more directives here
}

现在我设置另一个虚拟主机,如下所示:

server {
     listen 192.168.0.1:80; # another ip of course
     listen [fd9e:21a7:a92c:2323::1]:80;  # another ip of course

     server_name anotherdomain.foo.bar andanother.one;

     # and again much more directives
}

如果我提出请求http://domain.foo.bar,那么服务器就会anotherdomain.foo.bar应答,当然,我会得到 404。

所有域名解析为 192.168.1 和上面的 IPv6 地址...

优先级如何?ngnix 以何种方式访问​​服务器?我必须设置服务器正在监听的 IP 地址吗?为什么名称合适的服务器会被忽略而没有 IP 地址的服务器?

netstat -lnp | grep nginx
tcp        0      0 0.0.0.0:8080            0.0.0.0:*                   LISTEN      14290/nginx -g daem
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14290/nginx -g daem
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      14290/nginx -g daem
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      14290/nginx -g daem
tcp6       0      0 :::8080                 :::*                    LISTEN      14290/nginx -g daem
tcp6       0      0 :::80                   :::*                    LISTEN      14290/nginx -g daem
tcp6       0      0 :::443                  :::*                    LISTEN      14290/nginx -g daem

相关内容