![ngnix - 使用或不使用 IP 地址进行“监听”](https://linux22.com/image/702321/ngnix%20-%20%E4%BD%BF%E7%94%A8%E6%88%96%E4%B8%8D%E4%BD%BF%E7%94%A8%20IP%20%E5%9C%B0%E5%9D%80%E8%BF%9B%E8%A1%8C%E2%80%9C%E7%9B%91%E5%90%AC%E2%80%9D.png)
我有一个与 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