У нас есть сервер Apache, который работает как прокси для приложений, работающих на разных портах. Например:
domain.com/app1/service1 > localhost:101
domain.com/app1/service2 > localhost:102
domain.com/app2/service1 > localhost:201
Правила для определения порта приложения довольно сложны, поэтому я использую сценарий для этого с помощью mod_rewrite:
RewriteEngine On
RewriteMap mapper prg:/foler/rewriteUrl.sh
RewriteRule ^(.*)$ ${mapper:%{REQUEST_URI}} [P]
Проблема, с которой я столкнулся, заключается в том, что при просмотре журналов есть много запросов от ботов, получающих контент с других веб-сайтов. Я проверил, могу ли я проксировать контент с других серверов, и мог:
telnet domain.com 80
GET http://www.yahoo.com/ HTTP/1.1
Host: www.yahoo.com
Здесь я получаю контент от Yahoo, что означает, что любой может подключиться к моему серверу и начать делать запросы к другим серверам.
Я видел, что Apache рекомендует защитить ваш прокси, как указано здесь:
http://httpd.apache.org/docs/trunk/mod/mod_proxy.html#access
Но проблема в том, что я не знаю, какие IP-адреса будут использовать мой сервер в расширенном режиме, поэтому мой вопрос в том, как решить эту проблему, в то время как в то же время кто-либо может запросить мои приложения?
Дополнительная информация:
Спасибо
Если я правильно понимаю, что вы делаете, вам нужен не прокси-сервер пересылки, а шлюз, потому что все, что вы проксируете, - это запросы из WAN в интрасеть, т.е. обратный прокси, почему бы просто не отключить ProxyRequest
?
ProxyRequest Off
Директива ProxyRequests
Это позволяет или предотвращает работу Apache httpd в качестве прокси-сервера прямого доступа. (Установка ProxyRequests на Off не отключает использование директивы ProxyPass.)
В типичной конфигурации обратного прокси-сервера или шлюза этот параметр должен быть отключен.