使用 Docker-Compose 和 nginx-proxy 时出现 502 Bad Gateway 错误
502 Bad Gateway error using Docker-Compose and nginx-proxy
我是 nginx 的新手,正在尝试使用 Docker-Compose 设置链接的 DOcker 容器。
根据教程 here and jwilder's documentation here,我正在尝试在我的 Django 容器上部署一个 Nginx 代理。 docker-compose.yml 的结构如下:
build: .
command: bash -c "sleep 5 && python -u reroute/manage.py runserver 0.0.0.0:8081"
volumes:
- .:/code
environment:
- PYTHONUNBUFFERED=0
- VIRTUAL_HOST=site1.com
- VIRTUAL_PORT=8081
ports:
- "8081:8081"
links:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: xxxxxx
POSTGRES_USER: xxxxxx
ports:
- "5432"
volumes:
- ./backups:/home/backups
nginx:
image: jwilder/nginx-proxy
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock
ports:
- "80:80"
Nginx 的 .conf 文件中的配置如下所示:
server {
server_name _; # This is just an invalid value which will never trigger on a real hostname.
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}
upstream urls.mapquest.com {
## Can be connect with "bridge" network
# googleadtrafficredirect_web_1
server 172.17.0.4:8081;
}
server {
server_name urls.mapquest.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://urls.mapquest.com;
}
}
我希望 nginx 代理重定向到应用程序本身。我在 Ubuntu 上编辑了我的主机文件以指向我指定的新域。但是,当我在本地部署应用程序时,出现 502 Bad Gateway 错误,查看 Nginx 容器的日志显示我收到连接被拒绝的错误:
nginx.1 | 2016/06/21 17:39:00 [error] 24#24: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: urls.mapquest.com, request: "GET / HTTP/1.1", upstream: "http://172.17.0.4:8081/", host: "site1.com"
任何人都可以指出问题所在的正确方向吗?
原来应用程序本身有问题。在对远程版本进行更改之前,我正在本地测试 docker-compose 容器,并且忘记启用我的应用程序 work.Once 所需的特定配置我已经更正了,应用程序已正确加载并且nginx 重新路由成功。
我是 nginx 的新手,正在尝试使用 Docker-Compose 设置链接的 DOcker 容器。
根据教程 here and jwilder's documentation here,我正在尝试在我的 Django 容器上部署一个 Nginx 代理。 docker-compose.yml 的结构如下:
build: .
command: bash -c "sleep 5 && python -u reroute/manage.py runserver 0.0.0.0:8081"
volumes:
- .:/code
environment:
- PYTHONUNBUFFERED=0
- VIRTUAL_HOST=site1.com
- VIRTUAL_PORT=8081
ports:
- "8081:8081"
links:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: xxxxxx
POSTGRES_USER: xxxxxx
ports:
- "5432"
volumes:
- ./backups:/home/backups
nginx:
image: jwilder/nginx-proxy
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock
ports:
- "80:80"
Nginx 的 .conf 文件中的配置如下所示:
server {
server_name _; # This is just an invalid value which will never trigger on a real hostname.
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}
upstream urls.mapquest.com {
## Can be connect with "bridge" network
# googleadtrafficredirect_web_1
server 172.17.0.4:8081;
}
server {
server_name urls.mapquest.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://urls.mapquest.com;
}
}
我希望 nginx 代理重定向到应用程序本身。我在 Ubuntu 上编辑了我的主机文件以指向我指定的新域。但是,当我在本地部署应用程序时,出现 502 Bad Gateway 错误,查看 Nginx 容器的日志显示我收到连接被拒绝的错误:
nginx.1 | 2016/06/21 17:39:00 [error] 24#24: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: urls.mapquest.com, request: "GET / HTTP/1.1", upstream: "http://172.17.0.4:8081/", host: "site1.com"
任何人都可以指出问题所在的正确方向吗?
原来应用程序本身有问题。在对远程版本进行更改之前,我正在本地测试 docker-compose 容器,并且忘记启用我的应用程序 work.Once 所需的特定配置我已经更正了,应用程序已正确加载并且nginx 重新路由成功。