在 Ubuntu 12.04 上使用 Apache2 proxy_html 模块

在 Ubuntu 12.04 上使用 Apache2 proxy_html 模块

我正在尝试设置反向代理,以便从互联网访问多个内部 Web 服务器。我已经使用反向代理配置了一些基于名称的虚拟主机(我启用了 proxy 和 proxy_http 模块)。

到目前为止,一切都很好...

其中一台服务器恰好是 wordpress 网站。Wordpress 将生成包含其内部 url 的 html 页面(用于 css 等)。因此,我尝试使用 proxy_html 模块在反向代理上重写这些 url。但我失败了。

互联网上的大多数文档都涉及该模块的最新版本,但 12.04 附带 3.0.1 版本,我不知道如何使其工作。

以下是我在虚拟主机配置文件中输入的内容:

<VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName example.com
        ServerAlias www.example.com
        ProxyPass / http://192.168.1.12/
        ProxyPassReverse / http://192.168.1.12/
        ProxyHTMLURLMap http://192.168.1.12 http://www.example.com
        #SetOuputFilter INFLATE;proxy-html;DEFLATE
</VirtualHost>

我希望http://192.168.1.12服务器 192.168.1.12 上的 wordpress 生成的任何包含 的 url 都被翻译成http://www.example.com。但这并没有发生。我尝试添加其他指令,但都失败了:

ProxyHTMLEnable On

失败。它似乎太新了,并且不受此版本的模块支持。

SetOuputFilter INFLATE;proxy-html;DEFLATE

也失败了。也许我缺少一个模块来做这件事?我试过添加 a2enmod 过滤器,但它也不起作用……

好吧,有人可以启发我吗?

编辑SetOuputFilter注意到了? A中的错误输入缺失... 这就是SetOutputFilter proxy-html在 12.04 上让 proxy_html 工作的方法。但我宁愿选择另一种解决方案:告诉 wordpress 根据其公共名称行事并从一开始就生成正确的 url。

答案1

我一直告诉 Wordpress 我的站点地址是 example.com(这样 wordpress 创建的所有 URL 都没有 IP 地址),然后我的代理配置如下所示:

    ServerName example.com

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.1
    ProxyPassReverse / http://192.168.1.1

保持简单。

相关内容