Ale*_*kiy 5 django reverse-proxy nginx pgadmin docker
我遇到了配置环境的问题,包括 postgres、pgadmin 和 nginx。所有这些服务都位于 docker 容器中,这是我的 docker-compose 文件:
version: '3'
services:
postgres:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
pgadmin:
links:
- postgres:postgres
image: dpage/pgadmin4:3.0
environment:
PGADMIN_DEFAULT_EMAIL: 'postgres@pg.com'
PGADMIN_DEFAULT_PASSWORD: 'postgres'
ports:
- "5050:80"
restart: unless-stopped
nginx:
links:
- pgadmin:pgadmin
image: "nginx:1.13.12"
ports:
- "80:80"
volumes:
- ./nginxServers/server:/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)
这是我的nginx.conf,放置在./nginxServers/server:
server {
listen 80;
server_name _;
location /pgadmin/ {
proxy_pass http://pgadmin/;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这是一个非常简单的设置,允许我通过http://localhost/pgadmin使用 pgadmin 。
不幸的是,这不起作用。我可以通过http://127.0.0.1:5050看到 pgadmin Web 界面,但是当我导航到http://127.0.0.1/pgadmin时,所有样式和脚本都没有加载。
我还尝试了 nginx 配置中的另一个位置:
location /pgadmin {
proxy_pass http://pgadmin;
}
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助。
因此,我坚持正确配置 nginx 作为 pgadmin 的反向代理。
PS 正如我在谷歌上搜索到的,这个问题可能与提供 django 静态内容有关,但由于我不熟悉 django,我无法找到任何解决方法。
对于解决这个奇怪问题的任何帮助,我将不胜感激。
也许你已经解决了。但问题在于 nginx 解析主机名的方式。出于性能原因,它只执行一次。要强制 nginx 动态搜索 ip,只需在 nginx 配置中添加 Docker 解析器
http {
resolver 127.0.0.11 ipv6=off;
}
Run Code Online (Sandbox Code Playgroud)
请参阅底部:docker dns 服务器
| 归档时间: |
|
| 查看次数: |
4091 次 |
| 最近记录: |