用于后端重定向的 Apache proxypass 虚拟主机

用于后端重定向的 Apache proxypass 虚拟主机

我正在运行一个 Apache 代理负载均衡器。我有一个wiki.mydomain.com注册到这个负载均衡器的域名。我正在尝试将代理重定向到wiki.mydomain.com后端http://192.168.1.56/mediawiki/,下面是虚拟主机。

<VirtualHost *:80>
ServerName wiki.mydomain.com
<IfModule mod_proxy.c>

ProxyRequests Off
ProxyPreserveHost On
ProxyVia On

         <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
         </Proxy>


ProxyPass / http://192.168.1.56/mediawiki/
ProxyPassReverse / http://192.168.1.56/mediawiki/
</IfModule>
</VirtualHost>

为什么ProxyPass / http://192.168.1.56/mediawiki/不起作用?为什么只在ProxyPass /mediawiki http://192.168.1.56/mediawiki/匹配的目录下才起作用。我不能让它与上面的虚拟主机一起工作吗?

再次,我如何仅使用 将所有请求从wiki.mydomain.com发送到而不使用, , 。我也不想使用为 完成的虚拟托管,所以我不想在后端通过代理传递到虚拟托管,因为我必须为这个后端注册一个域名,如果有内部 DNS 服务器,可能不需要,但我没有运行内部 DNS。http://192.168.1.56/mediawiki/mod_proxyRedirectRewriteAliasmediawiki192.168.1.56/

有人知道如何使用 ProxyPass 和 ProxyPassReverse 做到这一点吗?谢谢!

答案1

您能否解释一下“不起作用”——当您有此配置并尝试请求页面时会发生什么?

如果我没记错的话,您需要更改 MediaWiki 的配置才能在更改后的路径下工作,因为它对这些事情非常敏感。它需要知道根目录在哪里,而现在,它就在那里/../- 这肯定会导致资源加载出现问题。

您需要调整中的$wgScriptPath$wgArticlePath配置设置LocalSettings.php,请记住,这将中断任何不使用代理直接与 wiki 服务器通信的内容(指向 的任何链接等/mediawiki/something)。如果确实需要直接通信而不是通过代理,那么您需要通过两个入口点使路径匹配。

相关内容