Apache:使用正则表达式代理内部 URL

Apache:使用正则表达式代理内部 URL

我有几个 servlet 在监听无法从外部访问的内部端口。我使用 ApacheProxyPassProxyPassReverse指令从端口 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

在日志中。

如何代理 URL 具有变化部分的内部 servlet?

答案1

ProxyPassMatch可以使用:

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

更多详细信息请访问Apache 在线文档

相关内容