Подтвердить что ты не робот

Прокси-сервер Apache

У меня есть сервер, не принадлежащий Apache, который прослушивает порт 8001 и порт прослушивания Apache 80. Я хочу, чтобы определенный виртуальный домен фактически обслуживался сервером без Apache через порт 80.

Пример:

<VirtualHost *:80>
  Servername example.com

  # Forward this on to the server on port 8001
</VirtualHost>

Я думал, что смогу сделать это с помощью mod_proxy и ProxyPass с чем-то вроде этого.

ProxyPass * http://www.example.com:8001/

Но это не работает.

4b9b3361

Ответ 1

ProxyPass * http://www.example.com:8001/

звезда действительна только в блоке. Прямая косая черта - это то, что вы хотите.

ProxyPass / http://www.example.com:8001/
ProxyPassReverse / http://www.example.com:8001/

Обратный прокси гарантирует, что перенаправления, отправленные сервером вашего сервера 8001, будут скорректированы на каноническое имя вашего прокси.

В руководстве Apache есть несколько примеров. http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

Ответ 2

У меня есть сайт, размещенный apache на порту 80. У меня также есть веб-сервер python, прослушивающий порт 8880, к которому необходимо получить доступ через http://[mydomainname]/something. Используя ответ txyoji, я получил его, просто добавив прокси-проход к определению моего виртуального хоста, например:

ProxyPass /something http://mydomainname:8880/something
ProxyPassReverse /something http://mydomainname:8880/something

UPDATE

В зависимости от вашей настройки, еще лучший способ сделать это - настроить прокси-пропуск для порта на "localhost". Я думаю, что это немного более понятно, что вы делаете, плюс более портативный. Наряду с этим вам не нужно даже открывать брандмауэр для этого порта! Вы можете прокси пропускать локально в любой порт, поэтому нет причин раскрывать это внешнему миру, если вам это не нужно. Воронка все через порт 80 и Apache всегда "выбегают впереди". Тогда вы можете просто беспокоиться о безопасности этого.

ProxyPass /something http://localhost:8880/something
ProxyPassReverse /something http://localhost:8880/something