Проблемы с конфигурацией обратного прокси-сервера nginx для обслуживания нескольких контейнеров док-приложений Django - PullRequest
1 голос
/ 19 апреля 2019

У меня проблемы с конфигурацией обратного прокси Nginx

У меня есть несколько док-контейнеров с сайтами Django на моем сервере и Я пытаюсь обслужить их, используя jwilder / nginx-proxy.

Что я делаю не так?

======== Структура проекта ========

Nginx прокси

  • докер-compose.yml

django_project_A

  • ЦСИ
    • файлы django (db.sqlite3 main_app manage.py django_project_A static)
  • докер-compose.yml
  • Dockerfile
  • конфиг
    • Nginx
      • nginx.conf

django_project_B

... так же, как django_project_A

=============== nginx-proxy docker-compose.yml ================= *

version: '3'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    restart: always
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy

=============== django_project_A docker-compose.yml ==================

version: '2'  
services:  
  nginx:
    image: nginx:latest
    container_name: nginx_django_project_A
    ports:
      - "80:8000"
    volumes:
      - ./src:/src      
      - ./src/static:/static
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: django_project_A
    command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn django_project_A.wsgi -b 0.0.0.0:8000"
    volumes:
      - ./src:/src
      - ./src/static:/static
    expose:
      - "8000"

networks:
  default:
    external:
      name: nginx-proxy

=============== django_project_A nginx.conf ==================

upstream web {  
  ip_hash;
  server web:8000;
}

server {  
  location /static/ {
        autoindex on;
        alias /static/;        
    }
  location / {
        proxy_pass http://web/;
    }

  listen 8000;
  server_name site.com;
}

=============== django_project_A Dockerfile ==================

FROM python:3.5  
ENV PYTHONUNBUFFERED 1  
RUN mkdir /config  
ADD /config/requirements.txt /config/  
RUN pip install -r /config/requirements.txt  
RUN mkdir /src;  
WORKDIR /src

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

«nginx-proxy docker-compose.yml» будет центром конфигурации, поэтому вы можете попытаться разрешить обмен данными между сетями между nginx и проектами A и B. Вы можете сделать это, попробовав что-то вроде вашего » nginx-proxy docker-compose.yml ":

networks:
  nginx:
  name: nginx
  ipam:
    driver: default

django_project_A:
   external: true

django_project_B:
   external: true
0 голосов
/ 19 апреля 2019

Конфигурация кажется хорошей, для начала проверьте порты и связь.

Из веб-контейнера проверьте, можете ли вы telnet на 127.0.0.1:8000, а также из контейнера nginx проверьте, можете ли вы пропинговать web. Если пинг до web успешен, попробуйте telnet web: 8000.

Если все это работает, на host попробуйте подключиться к telnet на host:80, потому что это может быть брандмауэр на хосте, который блокирует входящий трафик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...