Apache-2.4
Moodle 3.7 & Apache & 反向代理結果 ERR_TOO_MANY_REDIRECTS
具有反向代理結果 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;