Наконец я смог решить проблему, я пишу этот ответ с большим уровнем детализации, чтобы другие люди, имеющие эту проблему, могли последовать моему ответу.
Сначала нам нужно отредактировать конфигурацию apache2 для нашего сайта:
В общем, конфигурацию apache2 для указанного вами сайта можно найти по адресу /etc/apache2/sites-enabled
. В зависимости от того, используете ли вы 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
.
Теперь нам также нужно отредактировать несколько вещей в нашем файле moodle config.php
. Этот файл можно найти по адресу /var/www/html/moodle
на сервере с IP-адресом (в данном случае) 10.10.10.10
, если вы использовали расположение установки по умолчанию из руководств moodle.
В файле 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
Внимание: если вы не используете корневой каталог на общедоступном веб-сервере, убедитесь, что вы не используете тот же каталог, что и Moodle для этого субсервера. Например, http://public.domain.com/moodle
потерпит неудачу, если moodle установлен на субсервере в /var/html/moodle
, так как оба каталога равны, и прокси-сервер по какой-то причине зацикливается. Моим простым решением этой проблемы было просто перенести установку Moodle на /var/html/moodley
, включая все необходимые изменения в config.php
. Это исправляет все проблемы, которые у меня были.