NGINX 和 Kestrel 502 响应(111:连接被拒绝)
NGINX & Kestrel 502 Response (111: Connection Refused)
我在 docker 容器中安装了 NGINX,它可以正确地提供静态内容,因此没有问题。我将其配置为指向我 mac 上的 Kestrel 的代理。 Kestrel 在端口 5000 上响应良好(通过 Curl 检查),但由于某些奇怪的原因 NGINX 无法连接到它。
日志说:
15 connect() failed (111: Connection refused) while connecting to
upstream, client: 172.17.0.1, server: [OMITTED], request: "GET
/api/values/5000 HTTP/1.1", upstream:
"http://127.0.0.1:5000/api/values/5000"
我的 NGINX 配置:
location / {
proxy_pass http://dotnet;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
upstream dotnet {
zone dotnet 64k;
server 127.0.0.1:5000;
}
由于 nginx 运行 在您的容器中,127.0.0.1 是容器本地的,而不是 运行 它所在的主机。
您需要更改 IP 地址以匹配容器视为主机的地址(参见此处:https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/4)
此外,不要忘记在防火墙上打开端口:-)
我在 docker 容器中安装了 NGINX,它可以正确地提供静态内容,因此没有问题。我将其配置为指向我 mac 上的 Kestrel 的代理。 Kestrel 在端口 5000 上响应良好(通过 Curl 检查),但由于某些奇怪的原因 NGINX 无法连接到它。
日志说:
15 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: [OMITTED], request: "GET /api/values/5000 HTTP/1.1", upstream: "http://127.0.0.1:5000/api/values/5000"
我的 NGINX 配置:
location / {
proxy_pass http://dotnet;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
upstream dotnet {
zone dotnet 64k;
server 127.0.0.1:5000;
}
由于 nginx 运行 在您的容器中,127.0.0.1 是容器本地的,而不是 运行 它所在的主机。
您需要更改 IP 地址以匹配容器视为主机的地址(参见此处:https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/4)
此外,不要忘记在防火墙上打开端口:-)