Я использую Apache 2.2.15 в качестве обратного прокси в моей DMZ. У меня есть приложение во внутренней сети, которое я делаю доступным в Интернете для использования сотрудниками через обратный прокси-сервер.
В рамках этого приложения сотрудники могут просматривать сообщения с вложениями в формате PDF. Внутренний персонал (которому не нужно проходить через обратный прокси-сервер) может без проблем загрузить эти PDF-файлы. Внешний персонал не может.
Это то, что я вижу в журналах Apache на сервере приложений.
172.20.0.9 - - [04/Dec/2014:08:48:21 +1300] "GET /application/home/getAttachment/MTE7Y3lzdGljIGZpYnJvc2lzLnBkZg%3D%3D HTTP/1.1" 200 88090
10.0.0.2 - - [04/Dec/2014:08:48:27 +1300] "GET /application/home/getAttachment/MTE7Y3lzdGljIGZpYnJvc2lzLnBkZg== HTTP/1.0" 400 -
Первый запрос был от внутреннего пользователя, который успешно загрузил файл PDF. Второй исходит от обратного прокси в DMZ. Обратите внимание, как он отключил экранирование «% 3D% 3D» в конце URL-адреса на «==».
В обратном прокси я делаю несколько вещей. Сначала, если кто-то пытается перейти в корневой каталог, правило перезаписи отправляет его в каталог приложения.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/$ /application/ [NE,R]
</IfModule>
Другая важная часть конфигурации - это часть обратного прокси.
<IfModule mod_proxy.c>
RequestHeader set Front-End-Https "On"
SSLProxyEngine on
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1
# Reverse Proxy
ProxyPass /application https://server.internal.lan/application
ProxyPassReverse /application https://server.internal.lan/application
</IfModule>
Может ли кто-нибудь сказать мне, как перестать экранировать эти URL-адреса?
Спасибо
Дэвид
Флаг [NE] в вашем правиле перезаписи устанавливает для него значение No Escape. Попробуйте изменить его на [B], чтобы избежать обратных ссылок.