Как мне настроить мой ProxyPass с Apache и Django (и Docker)? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать локальный контейнер docker, чтобы иметь Django 2 / Python 3,7, Apache 2,4 и MySql 5,7 изображений. У меня проблемы с настройкой моего Apache прокси для правильного взаимодействия с моим Django экземпляром. У меня есть мой файл apache / my-vhosts.conf примерно так ...

<VirtualHost *:80>
    ServerName maps.example.com

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/

</VirtualHost>

Мой Apache 2.4 Dockerfile выглядит как

FROM httpd:2.4
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
COPY ./my-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf
COPY ./maps /usr/local/apache2/htdocs/maps

и мой общий docker -компонент .yml файл выглядит так ...

version: '3'

services:
  web:
    restart: always
    build: ./web
    ports:           # to access the container from outside
      - "8000:8000"
    environment:
      DEBUG: 'true'
    command: /usr/local/bin/gunicorn maps.wsgi:application -w 2 -b :8000

  apache:
    restart: always
    build: ./apache/
    ports:
      - "80:80"
    #volumes:
    #  - web-static:/www/static
    links:
      - web:web

  mysql:
    restart: always
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'maps_data'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'chicommons'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'password'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      - "3406:3406"
    volumes:
      - my-db:/var/lib/mysql

volumes:
  my-db:

К сожалению, когда я запускаю все с "docker -составить", мой запрос к "http://127.0.0.1/" умирает с a «Прокси-сервер получил неверный ответ от вышестоящего сервера». В моем docker -композиционном выводе я вижу

apache_1  | [Sun Feb 09 21:07:37.521332 2020] [proxy:error] [pid 11:tid 140081943791360] [client 127.0.0.1:35934] AH00898: Error reading from remote server returned by /
apache_1  | 127.0.0.1 - - [09/Feb/2020:21:06:37 +0000] "GET / HTTP/1.1" 502 341

1 Ответ

1 голос
/ 10 февраля 2020

Я думаю, что проблема в файле apache / my-vhosts.conf. Когда вы настраиваете ProxyPass / на http://127.0.0.1/, это означает, что вы используете прокси для localhost службы apache, а не для службы web или на хост-компьютере. Для передачи прокси в Интернет используйте этот конфигурационный файл my-vhosts.conf:

<VirtualHost *:80>
    ServerName maps.example.com

    ProxyPreserveHost On
    ProxyPass / http://web:8000/
    ProxyPassReverse / http://web:8000/

</VirtualHost>
...