Moodle 3.5带反向代理

问题描述 投票:0回答:2

我在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 ......

有谁知道可能会发生什么?

proxy reverse moodle
2个回答
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 webserver,这可以使用命令service apache2 restart来完成。

现在我们还需要在moodle config.php文件中编辑一些内容。如果您使用了moodle指南中的默认安装位置,则可以在服务器上的/var/www/html/moodle上找到此文件,其中包含IP(在本例中为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将失败,因为两个目录都相同并且代理由于某种原因而循环。我对此问题的轻松解决方法是将moodle安装移至/var/html/moodley,包括config.php中所有必需的更改。这解决了我遇到的每一个问题。


1
投票

解决此问题的最佳方法是将内部主机上的moodle安装移动到Web服务器的根目录。

将您的moodle在10.10.10.10移动到/而不是/ moodle

请注意,如果您将在外部apache上使用SSL(建议使用),您还应该在此行中添加以下内容:

$CFG->sslproxy = true;
© www.soinside.com 2019 - 2024. All rights reserved.