我已经搜索了StackOverflow来查找我的问题,但我的Nginx Docker配置似乎总是命中502 Bad Gateway
。我试图使用我的域mydomain.com/pgadmin
而不是mydomain.com:8060
访问pgadmin4
,其中8060
是它的Docker容器所公开的端口。我的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
错误。有人能好心地指出我哪里出错了吗?我真的很感激。
谢谢.
[编辑]这是从Docker日志:
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"
型
2条答案
按热度按时间0tdrvxhp1#
502问题来自于以下的问题:
上游pgadmin {服务器127.0.0.1:8060; }
NGINX容器的
127.0.0.1
或localhost
是NGINX容器本身。您应该使用服务的名称:字符串
服务名称来自
docker-compose.yml
:型
如果在这些更改后遇到404,这是因为您必须更改应用程序的基本路径。尝试使用此配置:
型
ibrsph3r2#
由于您的容器在同一个网络中工作,因此您应该通过Nginx容器的第80个端口访问Pgadmin容器。
您应该在Nginx配置中将这一行
server 127.0.0.1:8060
替换为server pgadmin:80
。