架 moodle 時,出現無限 303 see other 解決方法

問題

今天架了 Moodle,並把他放在 nginx reverse proxy 的後面,然後在 nginx 那層用 certbot 設了 SSL Proxy
重新載入時發現會一直無限 303 see other,隨後就因為 redirect 太多次被瀏覽器擋下來了QQ

解決方案

這是因為當 Moodle 前面有一層 SSL Proxy 時,前面的 nginx 會聽 HTTPS 然後幫你 redirect 到內網放 moodle 的 HTTP Port 上。

如果你的 config.php 中把 $CFG->wwwroot 設為有 https 的 URL 的時候,Moodle 會因為來源的 Port 是 HTTP Port,並且無法識別你是否藏在 reverse proxy 後面,導致他一直無限重新導向到 HTTPS,就會造成無限 redirect 的狀況。

解決方法很簡單,在 moodle 安裝目錄中,打開 config.php
然後設定 $CFG->sslproxy = true; 就好了。

您可能也會喜歡…