Мне нужно изменить заголовки ответов, поставленные с помощью директивы rexy-прокси, настроенной на http-сервере apache.Сочетание прокси-перезаписи в HTTP-сервере apache с обработкой заголовка
вещи прекрасно работать с этим простым примером, он безусловно доставляет цель с сервера бэкэнда для всех запросов:
<VirtualHost ...>
...
# unconditionally modify headers
Header set Content-Type "text/html"
Header unset Content-Disposition
Header unset Content-Transfer-Encoding
# fetch goal from backend
RewriteEngine on
SSLProxyEngine on
RewriteRule^https://back.example.org/goal [P]
...
# prevent all access to the file system
DocumentRoot /var/www/html
<Directory /var/www/html>
Options none
Order deny,allow
Deny from All
</Directory>
</VirtualHost>
Однако проблема в том, что хозяин также должен доставить несколько статических файлов из другой серверный сервер, где заголовки должны не быть изменены! Поэтому я сделал попытку переписать к виртуальной цели на первом этапе, применяются правила модификации заголовка, а затем прокси на втором этапе:
<VirtualHost ...>
...
# modify headers only for /goal
<Location /goal>
Header set Content-Type "text/html"
Header unset Content-Disposition
Header unset Content-Transfer-Encoding
</Location>
# fetch static exceptions from static backend
RewriteEngine on
SSLProxyEngine on
RewriteRule static-1$ https://static.example.org/static-1 [P]
RewriteRule static-2$ https://static.example.org/static-2 [P]
RewriteRule static-3$ https://static.example.org/static-3 [P]
# two step rewrite and proxy to fetch goal from backend and get the headers modified
RewriteRule ^/goal$ https://back.xample.org/goal [P]
RewriteRule^/goal [PT,N]
...
# prevent all access to the file system
DocumentRoot /var/www/html
<Directory /var/www/html>
Options none
Order deny,allow
Deny from All
</Directory>
</VirtualHost>
Это, однако, оставляет меня с состоянием HTTP 403.
Я использовал запись перезаписи для дальнейшего понимания, и действительно, запрос переписан на /goal
в соответствии с первым шагом, API-интерфейс API-интерфейса URI снова вызывается, а затем запрос просто отображается в файловую систему, которая объясняет 403. Почему Второй шаг переписывания применяется, шаг прокси, в следующем раунде?
Или, мой фактический вопрос: как я могу получить изменения заголовков, которые применяются к выворачиванию всех прокси-репозитов, но определяют некоторые явные исключения из модификаций заголовка?