Nginx 仅绑定到外部 IP(监听主机名:端口)

Nginx 仅绑定到外部 IP(监听主机名:端口)

我想指定一个 nginx 服务器,该服务器仅侦听指令中给出的主机名的外部 IP 。我的服务器具有解析为公共 IP 的listen域名。foobar.example.com1.2.3.4

当我像这样配置 nginx 服务器时

server {

    #listen 3330;
    listen foobar.example.com:3330;
    server_name foobar.example.com;

    location / {
        proxy_pass http://127.1.0.1:3330;
        proxy_set_header  Host               $host;
        proxy_set_header  X-Real-IP          $remote_addr;
        proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto  $scheme;
    }
}

但是它监听127.0.0.1:3330。这是为什么?我怎样才能让它绑定到1.2.3.4:3330而不在配置文件中对 IP 地址进行硬编码?

# dig +noall +answer foobar.example.com
foobar.example.com.     2648    IN  A   1.2.3.4
# dig +noall +answer -x 1.2.3.4
4.3.2.1.in-addr.arpa. 2828  IN  PTR foobar.example.com.
# dig +noall +answer -x 127.0.0.1
1.0.0.127.in-addr.arpa. 0   IN  PTR foobar.example.com.
1.0.0.127.in-addr.arpa. 0   IN  PTR foobar.

仅供参考:当我使用listen 3330并保持其余部分不变时,nginx 会进行监听0.0.0.0:3330,并且正如您所怀疑的那样,第一次请求时一切都会变得很糟糕http://foobar.example.com:3330。:-)

答案1

原来问题是我遗漏了以下内容/etc/hosts

127.0.0.1 localhost foobar.example.com.

我已经忘记它是怎么到那里的了。:-) 删除foobar.example.com.127.0.0.1 的别名使得使用上述代码片段配置的 nginx 只监听外部 IP,正如我预期的那样。

相关内容