我正在运行一个 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_proxy
Redirect
Rewrite
Alias
mediawiki
192.168.1.56
/
有人知道如何使用 ProxyPass 和 ProxyPassReverse 做到这一点吗?谢谢!
答案1
您能否解释一下“不起作用”——当您有此配置并尝试请求页面时会发生什么?
如果我没记错的话,您需要更改 MediaWiki 的配置才能在更改后的路径下工作,因为它对这些事情非常敏感。它需要知道根目录在哪里,而现在,它就在那里/../
- 这肯定会导致资源加载出现问题。
您需要调整中的$wgScriptPath
和$wgArticlePath
配置设置LocalSettings.php
,请记住,这将中断任何不使用代理直接与 wiki 服务器通信的内容(指向 的任何链接等/mediawiki/something
)。如果确实需要直接通信而不是通过代理,那么您需要通过两个入口点使路径匹配。