【发布时间】:2021-01-20 21:33:42
【问题描述】:
在服务器上,我有 2 个容器,前端在 8092 端口上运行,后端在 3011 端口上运行。 在浏览器中,我可以看到前端,但所有后端调用都收到 504 网关超时。 前端是 Angular 应用,后端是 express nodejs 应用。
后端端点正在调用https://test.example.com/api/some-path 如果我去https://xxx.domain.local:3011/api/some-path 我会收到回复。
server {
listen 443 ssl;
server_name test.example.com;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/web.key;
location / {
proxy_pass http://xxx.domain.local:8092;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
}
location /api {
proxy_pass https://xxx.domain.local:3011;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
【问题讨论】:
-
您是如何容器化您的后端应用程序的?
-
使用 Docker 和 NGINX
-
你是不是通过docker暴露了端口?
-
是的。在浏览器中,我可以得到来自xxx.domain.local:3011/api/some-path 的回复。但是当通过反向代理调用时,服务器要么没有收到请求,要么没有响应。
-
我想我找到了问题所在。配置显示 https 而不是 http。如果您的容器不提供 https,请确保将
proxy_pass https://xxx.domain.local:3011;更改为proxy_pass http://xxx.domain.local:3011;