外部からアクセスできない内部ポートをリッスンしているサーブレットがいくつかあります。私はApacheのProxyPass
およびProxyPassReverse
ディレクティブを使用して、ポート443からそれらを安全に提供します。
ProxyPass /media http://localhost:9002/
ProxyPassReverse /media http://localhost:9002/
これは正常に機能します-https://example.com/media
はhttp://localhost:9002/
から提供されます。
この問題は、URLの一部が異なる場合に発生します。例えば:
https://example.com/image/IMAGE_NAME_1
はhttp://localhost:9002/image/IMAGE_NAME_1
から提供する必要があります。
また、https://example.com/image/IMAGE_NAME_2
はhttp://localhost:9002/image/IMAGE_NAME_1
から提供する必要があります。
私は次のようないくつかのバリエーションを試しました:
RewriteEngine on
RewriteRule ^/image/(.*)$ http://localhost:9002/image/$1 [L,PT]
ProxyPass /image/ http://localhost:9002/image
ProxyPassReverse /image/ http://localhost:9002/image
ただし、この構成では、ブラウザにBad Request
が表示されます。
Invalid URI in request GET /image/1 HTTP/1.1
ログで。
RLの一部が異なる内部サーブレットをプロキシするにはどうすればよいですか?
代わりにProxyPassMatch
を使用します。
ProxyPassMatch ^/media http://localhost:9002/(.*)
ProxyPassReverse ^/media http://localhost:9002/(.*)
詳細については、 Apacheオンラインドキュメント を参照してください。