私はApacheのhttpサーバで設定したプロキシリライトディレクティブで配信されるレスポンスヘッダを変更する必要があります。問題は、ホストがからも、いくつかの静的ファイルを提供しなければならないことであるしかしapache httpサーバでのプロキシの書き換えとヘッダ操作の併用
<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
で私の葉:だから私は2番目のステップでプロキシに、その後、最初のステップで仮想目標に書き換えるヘッダ修正規則を適用し、しようとする試みを行いました私は詳細な洞察のためにリライトロギングを使用しましたが、最初の手順で要求が/goal
に書き換えられ、URI-to-filehandler APIが再び呼び出され、要求が単に403を説明するファイルシステムにマッピングされます。次のラウンドでは、2回目の書き換えステップが適用されます。プロキシステップですか?
それとも、私の実際の質問:どのように私はヘッダーいる可能変更はキャッチオール書き換えプロキシルールに適用されますが結果として生じるが、ヘッダの変更からいくつかの明示的な例外を定義しますか?私はどちらの答えもコメントを受信してから[OK]を