我正在尝试在 Ubuntu 机器上设置一个 moodle 服务器,它已经通过 Apache 提供 Plone 和 Trac 服务。
在我的 Moodle 配置中我有 $CFG->wwwroot = 'http://www.服务器名称.org/moodle‘
下面的配置(虽然复杂但有效)对于前两个来说运行良好,但是当我访问 www.server-name.com/moodle 时,我得到:
检测到不正确的访问,此服务器只能通过“http://xxx.xxx.xxx.xxx:8888/moodle“地址,抱歉
然后它转发到 IP 地址,Moodle 即可正常运行。
我缺少什么才能使服务器名称方法正常工作?
Apache 配置如下:
LoadModule transform_module /usr/lib/apache2/modules/mod_transform.so
Listen 8080
Listen 8888
Include /etc/phpmyadmin/apache.conf
<VirtualHost xxx.xxx.xxx.xxx:8080>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
<Location />
ProxyPass http://127.0.0.1:8082/
ProxyPassReverse http://127.0.0.1:8082/
</Location>
</VirtualHost>
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName www.server-name.org
ServerAlias server-name.org
ProxyRequests Off
FilterDeclare MyStyle RESOURCE
FilterProvider MyStyle XSLT resp=Content-Type $text/html
TransformOptions +ApacheFS +HTML
TransformCache /theme.xsl /home/web/webapps/plone/theme.xsl
TransformSet /theme.xsl
FilterChain MyStyle
ProxyPass /issue-tracker !
ProxyPass /moodle !
<Location /issue-tracker/login>
AuthType Basic
AuthName "Trac"
AuthUserFile /home/web/webapps/plone/parts/trac/trac.htpasswd
Require valid-user
</Location>
Alias /moodle /usr/share/moodle/
<Directory /usr/share/moodle/>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from all
<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
</Directory>
</VirtualHost>
答案1
问题在于 Moodle 配置,因为它$CFG->wwwroot
根本不应该受到服务器的影响。
也许如果您使用了第三方安装脚本,该变量会被再次设置和/或设置在另一个文件中。尝试http://xxx.xxx.xxx.xxx:8888/moodle
在 moodle 目录中进行 grep 搜索。
作为一种解决方法,您可以尝试使用$CFG->wwwroot = 'http://'.$_SERVER["HTTP_HOST"];