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

Защитите Apache при использовании mod_proxy_http и mod_rewrite

У нас есть сервер 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.)

В типичной конфигурации обратного прокси-сервера или шлюза этот параметр должен быть отключен.