我正在尝试设置将托管我的 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.net
并static.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
主机都可以完全访问。那有什么问题呢?
已经发现问题了。配置似乎是正确的,但代理服务器也被设置为 Docker 容器。因此,地址127.0.0.1
指向 Docker 容器,而不是主机。proxy_pass http://real_host_ip:8000;
工作正常。
归档时间: |
|
查看次数: |
13666 次 |
最近记录: |