带有反向代理的Moodle 3.5

时间:2018-07-04 16:24:04

标签: proxy reverse moodle

我很难在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

此重定向到:http://public.domain.com/moodle/index.php?sessionstarted=1&lang=en ...

有人知道会发生什么吗?

2 个答案:

答案 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中进行的所有必需更改。这样可以解决我遇到的每个问题。