Обратное проксирование от Apache до докера Nginx, на котором работает ReactJS с маршрутизатором - PullRequest
0 голосов
/ 01 декабря 2019

В настоящее время у меня есть сервер под управлением Apache, который также настроен для работы в качестве обратного прокси-сервера. На том же сервере у меня есть докер Nginx, на котором работает веб-сайт ReactJS с приложением ReactJS с маршрутизатором. Цель состоит в том, чтобы установить обратный прокси-сервер от сервера Apache к докеру nginx, чтобы люди могли получить доступ к приложению React, работающему в указанном док-контейнере Nginx.

Это моя конфигурация apache2:

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPreserveHost On

        ProxyPass /foo http://localhost:10080
        ProxyPassReverse /foo http://localhost:10080
</VirtualHost>

Это docker-compose.yml, используемый для запуска Nginx Docker

version: "3"
services:
  www:
    image: nginx
    container_name: react-www
    volumes:
      - ./react-app/build:/usr/share/nginx/html
    ports:
      - 10080:80
      - 10443:443
    networks:
      - www

networks:
  www:
    driver: bridge

И, наконец, это файл Nginx default.conf

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Доступприложение React, перейдя непосредственно к нему через http://example.com:10080, прекрасно работает, но если кто-то перейдет на http://example.com/foo,, оно будет перенаправлено на http://localhost:10080/foo и приведет к возврату пустой страницы, поскольку не существует / foo маршрута.

Вещи, которые я пробовал до сих пор, которые привели к 404 или пустой странице:

  • ПереписалURI путем удаления части / foo в Apache.
  • Добавлен каталог foo в /usr/share/nginx/html.
  • Переписал URI, удалив / foo внутри Nginx, затем прокси для себя.
  • Установите базовое имя маршрутизатора React to / foo .

На данный момент я понял, что мое понимание того, как взаимодействует URI, ограничено, поэтому я ценю, если кто-то сможет указать мне направильное направление. Хотя тот факт, что я использую Apache в качестве обратного прокси-сервера, находится вне моего контроля, в случае, если есть люди, которые считают, что я делаю что-то действительно глупое или неэффективное, я открыт для предложений альтернатив.

Спасибо всем, кто нашел время, чтобы прочитать это. Очень признателен, если кто-нибудь может мне помочь!

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