Você usa ProxyPassMatch
:
ProxyPassMatch ^/media http://localhost:9002/(.*)
ProxyPassReverse ^/media http://localhost:9002/(.*)
Encontre mais detalhes na documentação on-line do Apache .
Eu tenho alguns servlets ouvindo em portas internas que não são acessíveis de fora. Eu uso as diretivas ProxyPass
e ProxyPassReverse
do Apache para atendê-las com segurança a partir da porta 443:
ProxyPass /media http://localhost:9002/
ProxyPassReverse /media http://localhost:9002/
Isso funciona bem - https://example.com/media
é exibido em http://localhost:9002/
.
O problema acontece quando o URL tem uma parte variável. Por exemplo:
https://example.com/image/IMAGE_NAME_1
deve ser exibido em http://localhost:9002/image/IMAGE_NAME_1
.
E https://example.com/image/IMAGE_NAME_2
deve ser exibido em http://localhost:9002/image/IMAGE_NAME_1
.
Eu tentei algumas variações, incluindo:
RewriteEngine on
RewriteRule ^/image/(.*)$ http://localhost:9002/image/$1 [L,PT]
ProxyPass /image/ http://localhost:9002/image
ProxyPassReverse /image/ http://localhost:9002/image
Mas esta configuração resulta em Bad Request
no navegador e
Invalid URI in request GET /image/1 HTTP/1.1
Nos registros.
Como eu faço proxy de servlets internos nos quais o URL tem uma parte variável?
Você usa ProxyPassMatch
:
ProxyPassMatch ^/media http://localhost:9002/(.*)
ProxyPassReverse ^/media http://localhost:9002/(.*)
Encontre mais detalhes na documentação on-line do Apache .