我正在尝试为一个应用程序配置反向代理。 我正在使用apache 2.2 web服务器 以下是我的配置规则
关闭ProxyRequests
上的ProxyPreserveHost
ProxyPass / app /(http://11.11.111.11:123/)
ProxyPassReverse / app / http://11.11.111.11:123/
问题: 当我点击我的本地服务器的网址,如myserver.co.in/app/ 第一页即将到来(应用程序登录页面)。之后该应用程序重定向到url myserver.co.in/home/index.html并且重定向失败。自" / app /"部分在网址中缺失。
任何人都可以帮我解决这个问题。 提前谢谢。
答案 0 :(得分:0)
因为apache dosnt知道你想要一个不同的页面,你需要将这个虚拟主机的工作目录设置到你应用程序所在的目录。
例如,
DocumentRoot "/www/example2"
所以使用你的配置
<VirtualHost *:80>
DocumentRoot "/www/example2"
ProxyRequests off
ProxyPreserveHost on
ProxyPass /app/ (http://11.11.111.11:123/)
ProxyPassReverse /app/ http://11.11.111.11:123/
# Other directives here
</VirtualHost>
答案 1 :(得分:0)
您可以修改您的应用以添加/app
前缀,也可以使用mod_proxy_html
。
以下内容引自“ When ProxyPass and ProxyPassReverse aren’t enough”,并进行了修改以适合您的要求。
简而言之,mod_proxy_html
允许您重写html,javascript和css,以便URL可以干净地通过反向代理。这意味着后端应用程序以
<script src="/script/application.js" type="text/javascript"></script>
mod_proxy_html会将其转换为
<script src="/app/script/application.js" type="text/javascript"></script>
要使其正常工作,请将以下内容添加到httpd.conf
ProxyPass /app/ (http://11.11.111.11:123/)
ProxyPassReverse /app/ http://11.11.111.11:123/
ProxyHTMLURLMap http://11.11.111.11:123/ /app/
<Location /app/>
ProxyHTMLEnable On
ProxyPassReverse http://11.11.111.11:123/
SetOutputFilter proxy-html
ProxyHTMLURLMap / /app/
ProxyHTMLURLMap /app /app
</Location>