1

我必须运行 apache Web 服务器。一个在端口 80 上,另一个在端口 8077 上。

如果可能,我想尝试通过端口 80 版本重定向所有流量。

我最理想的是能够访问http://translate.example.com 并将流量定向到http://www.example.com:8077

我已经在主端口 80 服务器上进行了很多 mod_rewrite,但我不确定哪些服务器需要配置,或者两者是否都需要。

我想确保 translate.example.com/img (或任何其他子目录)实际上指向 8087/images 目录。

更新

我现在有以下内容:

RewriteCond %{HTTP_HOST} example[NC]
RewriteCond %{REQUEST_URI} ^/glot$ [NC]
RewriteRule    ^(.*)$  http://www.example.com:8077/$1  [P]
ProxyPassReverse / http://www.example.com/

我开始看到其他服务器的新页面,但我发现所有资源都没有找到,比如图像、css 等

查看源代码已安装产品中的所有资源都设置有前导斜杠

例如

/img/glotpress-logo.png

所以我不确定如何加载资源。请注意,如果原始起点是 www.example.com/glot 而不是原始问题中的 glot.example.com,我很高兴

4

2 回答 2

1

您可以将资源重新映射到另一台服务器,但将另一台服务器置于非默认端口上可能会阻止您的一些访问者查看它们,因为他们可能会被阻止(防火墙)访问该端口。如果您不担心端口被阻塞,您可以使用mod_rewrite Remapping Resources。方法。

RewriteEngine On
RewriteRule ^/images/(.+) http://www.example.com:8077/images/$1 [R,L]

如果您想确保每个人都能够查看外部资源,您需要使用代理,其中 apache 会将访问者连接透明地隧道连接到 example.com:8077。您可以在 apache 网站上阅读有关代理的 mod_rewrite 的更多信息。

RewriteEngine  on
RewriteBase    /images/
RewriteRule    ^images/(.*)$  http://example.com:8077/images/$1  [P]
ProxyPassReverse /images/ http://example.com/images/

更新

您是否尝试过删除

RewriteCond %{HTTP_HOST} example[NC] 

这一行基本上告诉它只有在 HTTP_POST 是 example.com 时才会处理,如果它来自 www.example.com 这个规则不适用。我希望“example [NC]”是一个错字。

最后它可能看起来像

RewriteRule ^/glot/(.*)$ http://www.example.com:8077/glot/$1 [P] 
ProxyPassReverse /glot/ http://www.example.com:8077/glot/
于 2013-01-20T01:06:54.247 回答
0

您需要在端口 80 服务器上进行配置,使其充当 8077 服务器的代理。

Apache 文档在这里:http ://httpd.apache.org/docs/trunk/rewrite/proxy.html

于 2013-01-20T00:55:04.767 回答