В настоящее время у меня есть сервер под управлением 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 в качестве обратного прокси-сервера, находится вне моего контроля, в случае, если есть люди, которые считают, что я делаю что-то действительно глупое или неэффективное, я открыт для предложений альтернатив.
Спасибо всем, кто нашел время, чтобы прочитать это. Очень признателен, если кто-нибудь может мне помочь!