Перенос куки через перенаправления при использовании 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

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

3 ответа

Решение

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

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

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

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 вместо разных номеров портов.

Другие вопросы по тегам