我正在使用带有mod-proxy的Apache2.2,并且我已经用几个ProxyPass语句配置了代理从远程URL到本地URL。我需要从Apache返回这些代理URL的自定义错误文档,因此我在mod-proxy配置中设置了“HTTP”以及一些ErrorDocument指令(带有本地ProxyErrorOverride路径),以返回一些感兴趣的ErrorDocument状态代码的自定义错误页面。但是,当返回一个我没有为其创建ErrorDocument指令的状态代码时,Apache会用一个默认的错误页面替换响应主体,而不是保持原始响应主体不变。这不适用于应用程序。所以我真的有两个问题:
1)如果我没有为特定状态码定义ErrorDocument覆盖,是否可以将Apache配置为保持原始响应正文不变?
2)是否可以将ProxyErrorOverride指令仅应用于我的ProxyPass语句中的某些URL?
发布于 2013-04-14 16:55:06
正如arober11在上面的评论中指出的:
担心答案是:不和不。如果该指令可以限制为一个位置、目录或一组URL,那么在手册页的"Context“部分中就会有一些内容: httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxyerroroverride
另一方面:你可以自己把它添加到mod_proxy.c中。
发布于 2015-04-24 04:46:43
问题2的:绝对可行。使用内部重定向到新主机或端口,这是可能的。使用主机的简要概述(在DNS中添加noErrorOverrideUrl、doErrorOverrideUrl或apache-machine的/etc/hosts ):
NameVirtualHost *:80
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(/noErrorOverrideUrl/.*) http://noErrorOverrideUrl$1 [L,P]
RewriteRule ^(/doErrorOverrideUrl/.*) http://doErrorOverrideUrl$1 [L,P]
</VirtualHost>
<VirtualHost *:80>
ServerName noErrorOverrideUrl
ProxyErrorOverride Off
ProxyPass ...
...
</VirtualHost>
<VirtualHost *:80>
ServerName doErrorOverrideUrl
ProxyErrorOverride On
ProxyPass ...
...
</VirtualHost>使用端口的简要概述:
Listen 80
Listen 81
Listen 82
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(/noErrorOverrideUrl/.*) http://server:81$1 [L,P]
RewriteRule ^(/doErrorOverrideUrl/.*) http://server:82$1 [L,P]
</VirtualHost>
<VirtualHost *:81>
ProxyErrorOverride Off
ProxyPass ...
...
</VirtualHost>
<VirtualHost *:82>
ProxyErrorOverride On
ProxyPass ...
...
</VirtualHost>发布于 2019-06-28 03:49:15
您可以升级apache并使用2.4+上可用的If语句。
<VirtualHost *:80>
...
<If "%{REQUEST_URI} =~ m#^\/QA(.*)$#">
ProxyErrorOverride Off
</If>
..
</VirtualHost>Documentation
https://stackoverflow.com/questions/7588229
复制相似问题