NGINX无视listen ip:port命令

时间:2018-03-29 20:18:20

标签: security nginx

我有NGINX的反向代理配置:

以下是我的配置,我已经删除了恕我直言与此无关的所有行。

主服务器:

server {
        listen       80;

    location / {
                include cors;
      proxy_set_header Host $http_host;
      proxy_hide_header Cache-Control;
      add_header Cache-Control $new_cache_control_header_val;

      proxy_pass http://127.0.0.1:8090;

    }
}

我的第二个NGINX配置

server {
        listen       127.0.0.1:8090;
}

问题是,当我在更加更加黑暗的时候:

http://myIP:8090/

我正在访问我的服务器,而我已经明确地将服务器设置为仅在此IP上侦听此PORT。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

根据documentation

  

... nginx首先测试请求的IP地址和端口   监听服务器块的指令。然后测试“主机”   针对server_name条目的请求的头字段   与IP地址和端口匹配的服务器块。如果是服务器名称   如果找不到,请求将由默认服务器处理。对于   例如,在192.168.1.1:80收到了www.example.com的请求   端口将由192.168.1.1:80端口的默认服务器处理,   即,由第一服务器,因为没有定义www.example.com   对于这个港口。

所以我会更进一步,理论上nginx看到端口8090上只有一个服务器块,并使其成为该端口的default_server

您可以通过添加带有该端口的第二个服务器块和您的myIP进行测试,看看是否会返回不同的内容。