Apache-2.4

Moodle 3.7 & Apache & 反向代理結果 ERR_TOO_MANY_REDIRECTS

  • December 30, 2020

具有反向代理結果 ERR_TOO_MANY_REDIRECTS 的 Moodle 3.7 Apache。

我在前端伺服器上有一個帶有以下 vhosts 文件的 SSL 站點:

<VirtualHost *:80>
   RewriteCond %{HTTPS} off
   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>     


<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName moodle.site.com:443

SSLEngine on
SecAuditEngine On
RewriteEngine On

   ProxyPreserveHost On
   ProxyPass / http://101.102.103.104:80/
   ProxyPassReverse / http://101.102.103.104:80/

</VirtualHost>                                  
</IfModule>

我還將所有 80 個埠請求重定向到 SSL 埠。

命令

curl -I https://moodle.site.com/

結果:

HTTP/1.1 303 See Other
Date: Fri, 09 Aug 2019 19:13:33 GMT
Server: Apache/2.4.38 (Debian)
Strict-Transport-Security: max-age=15768000; includeSubDomains
Location: https://moodle.site.com
Content-Language: en
Content-Type: text/html; charset=UTF-8

在 Moodle config.php 的後端伺服器上,我有:

$CFG->wwwroot   = 'https://moodle.site.com';
$CFG->reverseproxy = true;
$CFG->sslproxy  = 1;

知道為什麼當我嘗試打開https://moodle.site.com URL 時在 Google Chrome 中出現“ERR_TOO_MANY_REDIRECTS”錯誤嗎?

編輯1:

101.102.103.104 是 Moodle 後端伺服器的 IP 地址。前端伺服器有moodle.site.com 子域名,解析為1.2.3.4。使用者輸入moodle.site.com URL,它應該從101.102.103.104 IP 地址反向代理來自Moodle 後端伺服器的內容。

我無權訪問 Web 伺服器配置,所以我必須找到這個解決方法。文件 lib/setuplib.php,在我的例子中,第 900 行,Moodle 對此的註釋:$CFG->sslproxy 指定是否使用外部 SSL 設備(即,Moodle 伺服器使用 http,外部框將所有內容轉換為 https)。

改變

 if (empty($CFG->sslproxy))

為了

 if (!empty($CFG->sslproxy))

這就是開始正常安裝所需要的一切。(經過兩個小時的調試,到處都插入 die())

我有同樣的問題。不要更改 setuplib.php 中的任何內容。只需刪除$CFG->reverseproxy = true;php.config 中的 並在 config.php 中包含到您的moodle安裝的路徑為 https:// $CFG->wwwroot….。

因此,您的 config.php 文件將包含:

$CFG->wwwroot = "https://server/dirs";
$CFG->sslproxy = true;

引用自:https://serverfault.com/questions/978853