nginx:无法设置基本代理(连接被拒绝)

And*_*kyi 9 nginx

我正在尝试设置将托管我的 Web 应用程序的服务器。对于每个应用程序,入口点是一个 nginx 服务器,打包在 docker 容器中,其端口 80 转发到主机上的某个位置。服务器的80端口被nginx代理服务器监听,选择Host请求头对应的app 。

这是我的简单、完全静态的应用程序的 nginx 配置:

server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}
Run Code Online (Sandbox Code Playgroud)

App 的 80 端口绑定到主机的 8000 端口。

这是代理的配置:

server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}

server {
    listen 80;

    # not real DNS, just an example
    server_name static.myserver.net;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}
Run Code Online (Sandbox Code Playgroud)

DNS 记录myserver.netstatic.myserver.net绑定到服务器的 IP。

但是当我尝试连接到 时static.myserver.net,我收到错误 502 和代理日志条目,如下所示:

2016/06/04 13:26:58 [error] 5#5: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 100.100.100.100, server: static.myserver.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "static.myserver.net"
Run Code Online (Sandbox Code Playgroud)

应用程序的 nginx 日志是空的。

但是myserver.net:8000从网络和127.0.0.1:8000主机都可以完全访问。那有什么问题呢?

And*_*kyi 9

已经发现问题了。配置似乎是正确的,但代理服务器也被设置为 Docker 容器。因此,地址127.0.0.1指向 Docker 容器,而不是主机。proxy_pass http://real_host_ip:8000;工作正常。