Назад | Перейти на главную страницу

Передача файлов cookie через перенаправления при использовании Apache в качестве обратного прокси

Я пытаюсь настроить обратный прокси-сервер с помощью Apache на моем локальном компьютере, в моем httpd.conf есть следующее:

ProxyPass /app http://x.com
ProxyPassReverse /app http://x.com

Все работает отлично, и переход на 127.0.0.1/app/* работает, как ожидалось. Проблема возникает, когда я перехожу к URL-адресу, который выполняет перенаправление на ресурс с тем же именем хоста, но с другим портом. Сначала я думал, что смогу справиться с этой ситуацией следующим образом:

ProxyPass /app:81 http://x.com:81
ProxyPassReverse /app:81 http://x.com:81

Но пока это работает, файлы cookie, похоже, не переносятся через перенаправление. Как мне получить файлы cookie для перенаправления? Кроме того, хотя порт фактически известен заранее, существует ли более надежный метод обработки этого, чтобы перенаправление на любой произвольный порт обрабатывалось правильно?

Ну, вы могли бы использовать номера «портов» в пути, но не используйте «:».

ProxyPassReverse /app ht+p://x.com
ProxyPassReverse /app81 ht+p://x.com:81

Предположим, ваш сайт ht + p: //y.com:

y.com/app -> x.com

y.com/app81 -> x.com:81

Я предпочитаю использовать имена приложений на сервере. Фактически, у вас может быть много разных серверов приложений, но вы хотите, чтобы все веб-запросы выглядели так, как будто они исходят из одного места:

ProxyPassReverse /games ht+p://x.com:8080/games
ProxyPassReverse /finance ht+p://f.com:7000/money
ProxyPassReverse /movies ht+p://m.com:8001/cinema

y.com/games -> x.com:8080/games

y.com/finance -> f.com:7000/money

y.com/movies -> m.com:8001/cinema

Файлы cookie не обязательно используются разными номерами портов. Это из-за нечеткое поведение браузера, а не конфигурацию обратного прокси.

Я предлагаю вам использовать порт 80 (или 443) для внешнего интерфейса и использовать разные пути URL вместо разных номеров портов.

У вас не может быть спецификации порта на ProxyPass /app:81 - вместо этого порт для прослушивания должен определяться VirtualHost заблокировать это ProxyPass проживает в.

Создайте второй VirtualHost установите порт 81, затем поместите ProxyPass /app http://x.com:81 внутри него, чтобы получить желаемое поведение.