【问题标题】:apache reverse proxy configurationapache反向代理配置
【发布时间】:2015-04-26 03:44:23
【问题描述】:

我正在尝试为一个应用程序配置反向代理。 我正在使用 apache 2.2 网络服务器 以下是我的配置规则

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 并且重定向失败之后。因为 url 中缺少“/app/”部分。

谁能帮我解决这个问题。 提前致谢。

【问题讨论】:

  • 您需要修复从应用程序返回的路径。您必须在必要时为其生成的 URL 添加前缀 /app

标签: apache proxy reverse-proxy mod-proxy


【解决方案1】:

您可以修改您的应用以添加/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>

【讨论】:

    【解决方案2】:

    因为 apache 不知道您想要一个不同的页面,所以您需要将此虚拟主机的工作目录设置为您的应用所在的目录。

    例如,

    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>
    

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 2018-02-14
      • 1970-01-01
      • 2017-08-16
      • 2017-04-06
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多