Apache HTTP 2.4をリバースプロキシとして使用しています。私の構成では、1と思う除き正常に動作します:reverseProxy:埋め込みJavaScriptファイルの内容を変更する方法
- 私はこれは私の実際の仮想ホストの設定である
ファイル埋め込まれたJavaScriptで文字列のコンテンツ(URL)を変更したいと思います:
<VirtualHost web.mydomain.com:80>
ServerName web.mydomain.com
ServerAlias web.mydomain.com
DocumentRoot "..."
...
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
#Options -Indexes
#ProxyRequests On
#ProxyPreserveHost Off
# Web App
ProxyPass /hello http://middleware.mydomain.com:8082/hello-world-0.0.7
ProxyPassReverse /hello http://middleware.mydomain.com:8082/hello-world-0.0.7
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|hello-world-0.0.7|hello|ni"
</VirtualHost>
私を助けてもらえますか?
こんにちはいただきありがとうございます、:あなたは、単一のファイルに対して置換を使用する必要がある場合はApacheのみがそのファイルの追加作業を行うように、私は、ブロックにAddOutputFilterByTypeディレクティブ、代替とRequestHeaderディレクティブを包むお勧めします有用なコメントが得られます。私のルールのコンテンツタイプがtext/htmlである理由は、html.head.baseタグのコンテンツを変更するために使用されるためです。提案された設定を自分の仮想ホスト定義に追加しました。これは魅力的です。どうも! – zappee
質問がもう1つありますか? URLがhttp://web.mydomain.com/hello/の場合、上記のルールは機能します。その場合、html.head.baseタグが期待どおりに変更されました。しかし、リクエストURLがhttp://web.mydomain.com/hello/whateverであれば、html.head.baseタグには元のコンテンツが含まれています。それは変更されません。どうして? – zappee
あなたは何をあなたの設定に正確に入れましたか? Locationディレクティブは、Locationディレクティブの範囲を、Locationの後のパスで始まるURLに制限します。したがって、2番目のURLが異なる場合は、意味があります。そうでなければ、何が起こっているのか分かりません。 Locationディレクティブを削除すると問題は解決するはずですが、元の回答で述べたパフォーマンスの低下を最小限に抑えることをお勧めします。 – oneton