Django 502使用Docker Compose和nginx代理时发生网关错误

Django 502使用Docker Compose和nginx代理时发生网关错误,django,nginx,docker,docker-compose,Django,Nginx,Docker,Docker Compose,我是nginx新手,正在尝试使用DOcker Compose设置链接的DOcker容器 根据教程和jwilder的文档,我试图在Django容器上部署一个Nginx代理。docker-compose.yml的结构如下: build: . command: bash -c "sleep 5 && python -u reroute/manage.py runserver 0.0.0.0:8081" volumes: - .:/code environmen

我是nginx新手,正在尝试使用DOcker Compose设置链接的DOcker容器

根据教程和jwilder的文档,我试图在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坏网关错误,并且在日志中查找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容器,忘记启用我的应用程序正常工作所需的特定配置。一旦我纠正了这一点,应用程序将正确加载并成功重新路由nginx。

您的应用程序在没有nginx代理的情况下工作吗?我不明白为什么你有nginx代理的conf文件。nginx代理的要点是,除了将nginx代理链接到您的服务之外,您不需要(或很少需要)配置nginx代理。无论如何,结果证明应用程序本身存在问题。在对远程实例进行更改之前,我在本地测试容器,但忘记了我的应用程序需要某种配置才能正常工作。我遇到了这个问题,但我的应用程序日志没有显示任何故障,知道吗?我也有这个问题。我未确认的应用程序没有问题。