Прокси-сервер 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/
Но это не работает.
Ответы
Ответ 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