Mr *_*eph 4 reverse-proxy virtualhost custom-errors apache-2.2
我有一个反向代理 Apache,它将请求移动到 Tomcat servlet。Apache中虚拟主机上的配置是:
<VirtualHost 10.10.10.10:80>
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1//Site1/ServLet1
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site1/ServLet1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
本质上,如果涉及到10.10.10.10和 requests ,则将其/Site1/ServLet1路由到/Site1/ServLet1.
如果我添加
<VirtualHost 10.10.10.10:80>
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1//Site1/ServLet1
ErrorDocument 404 /customerrors/site1/404.html
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site1/ServLet1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
所以它会显示一个自定义错误site1(我设置了 ErrorDocument),它将被提供给两者。
如何在每个站点维护这种配置的情况下拥有不同的 404 错误页面?
谢谢
编辑:
如果我根据以下评论修改配置,例如:
<Location /Site1/ServLet1/>
ProxyPass http://1.1.1.1/Site1/ServLet1
ProxyPassReverse http://1.1.1.1/Site1/ServLet1
ErrorDocument 404 /customerrors/site1/404.html
</Location>
Run Code Online (Sandbox Code Playgroud)
然后我仍然可以到达http://1.1.1.1/Site1/ServLet1但没有显示任何错误页面
我不知道你所说的“不同VirtualHosts”的意思,因为这些都在同一个..但我想你会想要做这样的事情(和考虑移动ProxyPass报表到<Location>块也一样,如果你能) :
<VirtualHost 10.10.10.10:80>
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
<Location /Site1>
ErrorDocument 404 /customerrors/site1/404.html
</Location>
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
<Location /Site2>
ErrorDocument 404 /customerrors/site2/404.html
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
编辑:
要将Proxy语句驻留在位置块中:
<VirtualHost 10.10.10.10:80>
<Location /Site1>
ErrorDocument 404 /customerrors/site1/404.html
</Location>
<Location /Site1/ServLet1>
ProxyPass http://1.1.1.1/Site1/ServLet1
ProxyPassReverse http://1.1.1.1/Site1/ServLet1
</Location>
<Location /Site2>
ErrorDocument 404 /customerrors/site2/404.html
</Location>
<Location /Site2/ServLet2>
ProxyPass http://2.2.2.2/Site2/ServLet2
ProxyPassReverse http://2.2.2.2/Site2/ServLet2
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
使每个虚拟主机都有自己的 VirtualHost 定义。
<VirtualHost 10.10.10.10:80>
Servername site1.tld
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1//Site1/ServLet1
ErrorDocument 404 /customerrors/site2/404.html
</VirtualHost>
<VirtualHost 10.10.10.10:80>
ServerName site2.tld
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site1/ServLet1
ErrorDocument 404 /customerrors/site2/404.html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
您还需要确保您有一个合适的NameVirtualHost定义。
| 归档时间: |
|
| 查看次数: |
9040 次 |
| 最近记录: |