[英]Apache rewrite or proxy with redirect of internal server
我正在尝试使用Apache作为内部tomcat服务器的代理,但是tomcat服务器执行的重定向使我发疯
我首先尝试通过以下方式尝试mod_proxy :
ProxyPass / ajp://127.0.0.1:8045/bv-via-web/
ProxyPassReverse / ajp://127.0.0.1:8045/bv-via-web/
当访问/
(根)时,内部服务器执行到/bv-via-web/hola
的重定向,该重定向不存在。 它应该重定向到/hola
。 如何通过Apache配置实现此目标?
作为一种解决方法,我虽然添加了以下内容:
ProxyPass /bv-via-web/ ajp://127.0.0.1:8045/bv-via-web/
ProxyPassReverse /bv-via-web/ ajp://127.0.0.1:8045/bv-via-web/
但这不起作用,因为它将URL扩展到内部请求bv-via-web/bv-via-web/hola
。 因此,基本上我想更改url,但不知道使用mod_proxy怎么可能。
然后,我尝试使用以下命令mod_rewrite :
RewriteEngine on
RewriteRule ^/bv-via-web/(.*)$ http://127.0.0.1:8040/bv-via-web/$1 [P,L]
RewriteRule ^/(.*)$ http://127.0.0.1:8040/bv-via-web/$1 [P,L]
但是,当我打开网站的根目录时,它将执行重定向,并且浏览器地址中显示http://127.0.0.1:8040/bv-via-web/hola
。
我不明白,由于[P]标志,它应该作为内部代理工作。
我究竟做错了什么 ?
我通过添加解决了它:
ProxyPreserveHost On
如上所述,它不会转发到127.0.0.1。 因此,总的配置片段为:
RewriteEngine on
RewriteRule ^/bv-via-web/(.*)$ http://127.0.0.1:8040/bv-via-web/$1 [P]
RewriteRule ^/(.*)$ http://127.0.0.1:8040/bv-via-web/$1 [P]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.