apache反向代理配置

时间:2015-02-24 13:31:49

标签: apache proxy reverse-proxy mod-proxy

我正在尝试为一个应用程序配置反向代理。 我正在使用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 /"部分在网址中缺失。

任何人都可以帮我解决这个问题。 提前谢谢。

2 个答案:

答案 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>