apache - 在 CentOS 7 上设置 mod_proxy_html

标签 apache proxy httpd.conf mod-proxy mod-proxy-html

我正在尝试在我的 Web 服务器上进行一些测试,以确保反向代理在将其放入实时环境之前按预期工作,但是我遇到了 mod_proxy 和 mod_proxy_html 的一些问题。

我有 2 个虚拟主机,1 个在端口 80 上,1 个在端口 8080 上。我的目标是让 www.example.com/path/的传入请求进入端口 80,并反向代理到端口 8080。

这是我的虚拟主机设置:

<VirtualHost *:8080>
ServerName www.example.com:8080
DocumentRoot /var/www/html/test
RewriteEngine On
RewriteCond  %{REQUEST_URI}  !^.*test
RewriteRule ^/?(.*) http://127.0.0.1:8080/test.html [R=301,L]
</VirtualHost>

<VirtualHost *:80>
ServerName www.example.com
ProxyHTMLEnable On
ProxyHTMLInterp On
ProxyPreserveHost Off
ProxyPass        /path/ http://127.0.0.1:8080/
ProxyPassReverse /path/ http://127.0.0.1:8080/
ProxyHTMLURLMap http://127.0.0.1:8080/ /path/
</VirtualHost>

我的/var/www/html/test 有 2 个文件 index.html 和 test.html
test.html 的内容是:
<HTML>
<BODY>
<a href="http://127.0.0.1:8080/index.html">TEST</a>
</BODY>
</HTML>

转到 www.example.com/path/成功被代理并重定向到 www.example.com/path/test.html,但页面上的链接仍指向 127.0.0.1。

httpd -M 确实报告加载了 proxy_module 和 proxy_html_module
我也试过手动添加 LoadModule 到 http.conf
LoadModule proxy_module /usr/lib64/httpd/modules/mod_proxy.so
LoadModule proxy_html_module /usr/lib64/httpd/modules/mod_proxy_html.so

关于为什么它不能正常工作的任何想法?我是否错误地配置了某些东西?

最佳答案

mod_proxy_html CentOS 7 中的软件包不包含任何默认值 ProxyHTMLLinksProxyHTMLEvents设置,因此除非您自己提供这些设置,否则它什么都不做。

一种方法是复制 /usr/share/doc/httpd-2.4.6/proxy-html.conf进入 /etc/httpd/conf.d/ .该文件包含以下设置,应该可以正常工作:

ProxyHTMLLinks  a       href
ProxyHTMLLinks  area        href
ProxyHTMLLinks  link        href
ProxyHTMLLinks  img     src longdesc usemap
ProxyHTMLLinks  object      classid codebase data usemap
ProxyHTMLLinks  q       cite
ProxyHTMLLinks  blockquote  cite
ProxyHTMLLinks  ins     cite
ProxyHTMLLinks  del     cite
ProxyHTMLLinks  form        action
ProxyHTMLLinks  input       src usemap
ProxyHTMLLinks  head        profile
ProxyHTMLLinks  base        href
ProxyHTMLLinks  script      src for

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
                onmouseover onmousemove onmouseout onkeypress \
                onkeydown onkeyup onfocus onblur onload \
                onunload onsubmit onreset onselect onchange

关于apache - 在 CentOS 7 上设置 mod_proxy_html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340737/

相关文章:

Java 评估字符串作为表达式或代码执行

apache - 将所有流量重定向到 https ://www. 目前我有两个版本 http://www 和 https://www

php - 如何使用 tailf 正确编码 apache error.log?

macOS Sierra 10.12.3 上的 PHP 7.1 - 由 Homebrew 安装

linux - 403 禁止尝试访问浏览器上的文件夹

php - 如何删除重定向中 URL 的特定部分?

mongodb - 如何在 Nginx 反向代理后面设置 MongoDB

windows - vagrant-proxyconf "` 分割': bad URI"error on installing plugin for Vagrant

java - 简单的网络服务示例 tomEE 不工作

apache - httpd-2.4.16 包中的 httpd.conf 文件在哪里?