我很难在apache代理后面设置一个moodle实例。
这是我的Apache前端,代理正在运行的服务器。
<VirtualHost *:80>
ServerName public.domain.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://10.10.10.10:81/moodle/
ProxyPassReverse / http://10.10.10.10:81/moodle/
</VirtualHost>
和。
$CFG->wwwroot = 'http://public.domain.com';
我安装没有问题,但是安装完成后,我尝试在浏览器中浏览
此重定向到:http://public.domain.com/moodle/index.php?sessionstarted=1&lang=en ...
有人知道会发生什么吗?
答案 0 :(得分:1)
解决此问题的最佳方法是将内部主机上的moodle安装移动到Web服务器的根目录。
将您的情人移至10.10.10.10,而不是/ moodle
请注意,如果要在外部apache上使用SSL(建议),则还应在此行中添加以下行:
$CFG->sslproxy = true;
答案 1 :(得分:0)
最后,我已经能够解决该问题,我将以更高的详细程度来编写此答案,以便其他有此问题的人可以遵循我的答案。
首先,我们需要为我们的站点编辑apache2配置:
通常,可以在/etc/apache2/sites-enabled
上找到指定站点的apache2配置。根据您使用的是http还是https,需要编辑正确的配置文件。 http的默认名称为000-default.conf
,https的默认名称为000-default-ssl.conf
在<VirtualHost *:80>....</VirtualHost>
部分之间添加以下行。
# MOODLE
ProxyRequests Off
ProxyPreserveHost On
ProxyPass "/" "http://10.10.10.10:81/moodle/"
ProxyPassReverse "/" "http://10.10.10.10:81/moodle/"
然后,我们需要重新启动apache2网络服务器,这可以通过命令service apache2 restart
完成。
现在,我们还需要在我们的config.php
文件中编辑一些内容。如果您使用了穆迪指南中的默认安装位置,则可以在具有IP(在本例中为/var/www/html/moodle
)的服务器上的10.10.10.10
上找到此文件。
在config.php
文件中,我们在默认的$CFG
声明下附加了以下几行:请确保根据您的服务器设置更改所有值。
$CFG->wwwroot = 'http://public.domain.com';
$CFG->dirroot = '/var/www/html/moodle';
$CFG->reverseproxy = true;
//$CFG->sslproxy = true; //UNCOMMENT this line if you are using SSL
注意:如果未在公共Web服务器上使用根目录,请确保使用的目录与子服务器上的moodle不在同一目录中。例如,如果在http://public.domain.com/moodle
的子服务器上安装了moodle,/var/html/moodle
将会失败,因为两个目录相等,并且代理由于某种原因而循环。对于此问题,我的简单解决方法是将移动安装程序移动到/var/html/moodley
,包括在config.php
中进行的所有必需更改。这样可以解决我遇到的每个问题。