Apache: proxy uma URL interna usando regex

1

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?

    
por Adam Matan 23.02.2014 / 21:26

1 resposta

8

Você usa ProxyPassMatch :

ProxyPassMatch    ^/media http://localhost:9002/(.*)
ProxyPassReverse  ^/media http://localhost:9002/(.*)

Encontre mais detalhes na documentação on-line do Apache .

    
por 23.02.2014 / 21:31