docker - 在 Docker 和 Nginx 中使用反向代理时出现 502 Bad Gateway
问题描述
我已经在 StackOverflow 上搜索了我的问题,但我似乎总是在502 Bad Gateway
使用我的 Nginx Docker 配置。我正在尝试pgadmin4
使用我的域mydomain.com/pgadmin
而不是它的 docker 容器暴露的端口mydomain.com:8060
在哪里访问。8060
我的docker-compose.yml
文件如下所示:
version: '3.5'
services:
reverse-proxy:
image: nginx:1.19.6
restart: always
ports:
- "80:80"
- "443:443"
postgres:
image: postgres:12
ports:
- "5432:5432"
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "8060:80"
networks:
default:
external:
name: defaultnetwork
我的 nginx 容器的default.conf
文件如下所示:
upstream pgadmin {
server 127.0.0.1:8060;
}
server {
listen 80;
listen [::]:80;
server_name mydomain.com;
root /usr/share/nginx/html;
index index.html index.htm;
location /pgadmin {
proxy_pass http://pgadmin;
}
}
使用此配置,我不断收到502 Bad Gateway
错误消息。有人可以指出我哪里出错了。我真的很感激。
谢谢。
[编辑] 这是来自泊坞窗日志:
2021/02/03 08:07:42 [error] 23#23: *2 connect() failed (111: Connection refused) while connecting to upstream, client: ***.***.***.***, server: mydomain.com, request: "GET /pgadmin HTTP/1.1", upstream: "http://127.0.0.1:8082/pgadmin", host: "mydomain.com"
解决方案
502问题来自这里的环回IP:
上游 pgadmin { 服务器 127.0.0.1:8060; }
127.0.0.1
或者localhost
对于 NGINX 容器来说是 NGINX 容器本身。您应该改用服务的名称:
upstream pgadmin {
server pgadmin:8060;
}
服务名称来自docker-compose.yml
:
services:
pgadmin: # <- this
image: dpage/pgadmin4
如果您在这些更改后点击 404,这是因为您必须更改应用程序的基本路径。尝试使用此配置:
location /pgadmin/ {
proxy_set_header X-Script-Name /pgadmin;
proxy_set_header Host $host;
proxy_pass http://pgadmin;
proxy_redirect off;
}
推荐阅读
- filter - 在 vtk.js 中将法线设置为 polydata 时 TubeFilter 出现问题
- python-3.x - 从多个 *.root 文件获取数据时遇到问题...但仅使用一个文件没有问题
- aws-lambda - Amazon Skill Flow Builder 超时和重新提示和回顾的回退
- angular - 如何在 Angular Elements 应用程序中使用 AMP 组件
- elementor - 如何在悬停时触发弹出窗口而不是在 Elementor 中单击?
- docker - 如何为 kubernetes 的 kubelet 设置限制?
- php - 使用 Imagick 将 .pdf 转换为 .jpg 并在现场显示
- javascript - 避免图表加载新旧数据相邻
- javascript - 无法将文本分配给 Node 中的 const
- unity3d - 如何使用 Arcore Unity 更改生成图像的颜色