我遇到了这个问题,无法通过在此网站或其他任何地方找到的任何方法解决。
假设我有一个域和 Debian 服务器NGINX安装在其上作为 Web 服务器的主网关。在这个域上(在根级别),我有一个传统的处理方式(例如剥离 www、每次重定向到 https 等 - 基本的东西)。
但现在我想在docker-compose
文件中管理一组服务,这些服务将在 docker start 时执行,并且这些服务将映射为子域名到我的主域。假设该域已设置正确的 DNS 记录(这些都不是问题,因为我一直在使用子域来提供非 docker 服务,没有任何问题)。为简单起见,仅以一项服务pgAdmin4
为例
解决此问题的 NGINX 配置的一部分非常简单。
server {
listen 80;
server_name pg.example.com;
location / {
proxy_pass http://pgadmin:81;
}
}
Docker Compose 更加基础
version: '3.8'
services:
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: pw
ports:
- "81:80"
当我尝试sudo nginx -t
检查配置时,出现错误host not found in upstream "pgadmin"
当我尝试用 替换容器的名称host.docker.internal
(在撰写时使用 extra_hosts 设置"host.docker.internal:host-gateway"
)或者当我尝试使用127.0.0.1:81
或简单时localhost:81
,我收到(重新启动 NGINX 后)502 Bad Gateway
白标签页面错误。
在日志中我可以看到很多错误,例如
*2 连接到上游时没有实时上游,客户端:78.136.141.1,服务器:pg.example.com,请求:“GET / HTTP/1.1”,上游:“http://localhost/”,主机:“pg.example.com”
Can anyone tell me what am I doing wrong?