我正在尝试使用 apache mod_include。
我有两台运行 apache 的服务器:我试图在我的 test_local.shtml (server1) 中包含一些来自 test_remote.shml (server2) 的简单文本。
test_local.shtml:
<html>
<head>
<title></title>
</head>
<body>
<!--#include virtual="http://www.server2.com/test_remote.shtml"-->
</body>
</html>
test_remote.shtml:
<b>this is a test</b>
起初它不起作用(在error_log中出现“文件不存在”错误)。看起来出于安全原因,我设法包含的唯一文件位于我的本地服务器(server1)上,具有本地路径,但没有远程 url。然后我明白我需要将 mod_proxy(和 mod_proxy_html)与 mod_include 结合使用才能使远程包含工作。
所以我将以下内容添加到我的 httpd.conf(在 server1 上):
ProxyPass /server2 http://www.server2.com
然后我将 test_local.shtml 中的包含行更改为:
<!--#include virtual="/server2/test_remote.shtml"-->
这次没有错误,包含了一些内容,但生成的文本都是乱码:
‹³I²+ÉÈ,V¢D…’Ôâý$;.j¿è
我的配置中是否缺少某些内容?怎么了?
更新:我怀疑这与两台服务器之间发送(然后读取)数据的方式有关..例如压缩或类似。我检查了 mod_deflate 配置部分,它包含在两个服务器中并在两个服务器中工作,它是相同的。任何的想法?谢谢
更新 2:在 server2 上禁用 SetOutputFilter DEFLATE,在 server1 上包含 mod_include 的文本是完全可读的。所以这就是问题的根源:如何配置 server1 来处理 gzip 压缩的内容并正确显示?(假设我会想象某种与输出过滤器相反的输入过滤器..)