如何向 apache 反向代理规则添加例外

18 apache-2.2

我正在尝试设置 Apache 反向代理,以便将请求代理到在 8080 上运行的另一个应用程序。但是,我希望直接提供某些目录而不是转发到代理。我想要的是:

http://localhost/ -> http:// localhost:8080/myapp
http:// localhost/images -> /var/www/html/images
http:// localhost/anything-else -> http:// localhost :8080/myapp/anyhthing-else

我目前的 httpd.conf 是

ProxyRequests Off
ProxyTimeout 600
ProxyPreserveHost On
ProxyPass / http:// localhost:8080/
ProxyPassReverse / http:// localhost:8080/
RewriteEngine On
RewriteRule ^/(.*) http:// localhost:8080/VirtualHostBase/http/%{SERVER_NAME}:80/myapp/VirtualHostRoot/$1 [L,P]
Run Code Online (Sandbox Code Playgroud)

我应该做什么配置才能使本地路径异常工作?

谢谢你,塔尼亚

小智 27

我找到了解决方案。

要排除 /myapp,我需要添加

ProxyPass /myapp ! 
Run Code Online (Sandbox Code Playgroud)

作为第一个 ProxyPass 指令,因为排除应该在一般规则之前。

我还需要添加

RewriteCond !^/myapp/(.*)
Run Code Online (Sandbox Code Playgroud)

在 RewriteRule 之前将其从 RewriteRule 中排除