1. 程式人生 > >解決 moodle 內外網同時訪問問題(較完美)

解決 moodle 內外網同時訪問問題(較完美)

摘要:Moodle v2.4.x 新版比 v1.9.x 舊版改進了諸多內容,不過即使是官網最新的 V2.4.3+ 版,也未能解決內外網同時訪問的問題。在網上百度了下,方法多種,不過以訛傳訛,均不能完美解決實際問題。 網上的基本思路差不多一樣, 都是通過修改 Moodle 安裝資料夾下的....

Moodle v2.4.x 新版比 v1.9.x 舊版改進了諸多內容,不過即使是官網最新的 V2.4.3+ 版,也未能解決內外網同時訪問的問題。在網上百度了下,方法多種,不過以訛傳訛,均不能完美解決實際問題。

  網上的基本思路差不多一樣, 都是通過修改 Moodle 安裝資料夾下的 config.php 檔案,找到$CFG->wwwroot = 'http://xxx.xxx.xxx.xxx',將之修改為讓系統自動判定訪問路徑,號稱完美解決問題。如其中一種方法:將$CFG->wwwroot = 'http://xxx.xxx.xxx.xxx'; 修改為:$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST']; 即可。如果有下級目錄的話修改為:$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST'].'/moodle'; 從而讓系統自動判定訪問路徑。這種實現方法較簡單,但我試了多回卻不能自動判定訪問路徑。還有種方法是在 config.php 裡添加了個判斷路徑的函式語句(具體方法略,感興趣的可找度娘),不過同樣不能完美解決實際問題。

  前面幾種方法,始作俑者自己可能是成功的,但為什麼我們照這些方法來做卻大都失效呢,因為大家各自內外網的配置環境不同。最主要的原因,網上也有討論說是因為 Moodle 採用的是絕對路徑機制,而內網、外網訪問時,前者用的是內網 IP 地址,後者用的是公網 IP 地址,兩者不一致,導致一個好訪問了,另一個肯定不好訪問。那 Moodle 為什麼不採用動態相對路徑機制呢,唉,據說因為 Moodle 的程式碼太多了(150萬行以上),調整修改起來太麻煩,於是這個問題拖到現在都沒解決。

  那麼到底有沒有解決方法呢?針對目前 Moodle 採用絕對路徑這一特性,要讓內、外網不同的 IP 地址都指向同一伺服器,那麼可以通過域名解析來解決。如何實現?下面通過一個案例來說明:


  假設某校內部 Moodle 伺服器 IP 地址為:172.16.3.2,該校公網固定 IP 地址為:1.2.3.4,該校有公網域名 abc.cn,訪問 Moodle 網站的網址為:http://moodle.abc.cn:888(為什麼不使用預設的80埠?假設該校80埠另有用途)。

  1、解析 moodle.abc.cn 指向該校公網固定 IP 地址:1.2.3.4。(不會做的找 DNS 服務商解決)
  2、防火牆上做目的地址轉換:任意地址訪問公網IP地址1.2.3.4(埠888),則將公網IP地址1.2.3.4(埠888)轉換為路由器(或代理伺服器)的外IP地址172.16.1.2(埠888)。
  3、在路由器(或代理伺服器)上做埠對映: 將路由器外IP地址172.16.1.2的888埠,解析到內網 Moodle 伺服器IP地址172.16.3.2的888埠,TCP協議。
  4、修改 Moodle 安裝資料夾下的 config.php 檔案,找到$CFG->wwwroot = 'http://xxx.xxx.xxx.xxx';,將之修改為:$CFG->wwwroot = 'http://moodle.abc.cn:888';。(或者在初始化 Moodle 時設定)
  5、修改 Apache 配置檔案 httpd.conf,將 Listen 80 改成 Listen 888,將 ServerName localhost:80 改成 ServerName localhost:888。(如果你本來就用預設的80埠訪問則不必修改)
  6、在客戶機上修改 hosts 檔案,新增一句:172.16.3.2 moodle.abc.cn。(如果你有內網 DNS 伺服器,則在其上建立 abc.cn 域,做主機名 moodle 解析到 172.16.3.2 即可。)
  7、Moodle 服務需要重啟下。則內外網同時用“http://moodle.abc.cn:888”訪問 Moodle 網站一切OK!

  如果你沒有申請公網域名,只要有公網 IP 地址,照樣可用上述方法,只是外網使用者要參照上述第6條,修改下 hosts 檔案,新增一句如:1.2.3.4 moodle.abc.cn,將指定域名解析到公網 IP 地址即可。

  PS:有人或許會問,既然防火牆及路由器作了公網IP到內網IP的地址轉換和埠對映,那第6條不是多餘的麼,內網使用者不是直接可以用域名訪問Moodle伺服器的麼?的確,理論上這樣是可以的。但這樣做,內網使用者訪問Moodle伺服器的路徑非常繁雜:先由路由器(或代理伺服器)出防火牆解析域名得到公網IP地址,再經防火牆及路由器作公網IP到內網IP的地址轉換和埠對映,才訪問到內網Moodle伺服器;回程時,則由內網Moodle伺服器,經路由器(或代理伺服器)到達防火牆,再由防火牆經路由器(或代理伺服器)才能到達內網使用者。這一切,哪有內網使用者通過修改hosts或內網DNS解析,直接訪問內網Moodle伺服器來得方便快捷得多啊!

  用域名來訪問 Moodle 網站的好處還在於,萬一你公網或內網IP有變,只要在域名解析上稍作改變即可,非常方便!

相關推薦

解決 moodle 內外同時訪問問題(完美)

摘要:Moodle v2.4.x 新版比 v1.9.x 舊版改進了諸多內容,不過即使是官網最新的 V2.4.3+ 版,也未能解決內外網同時訪問的問題。在網上百度了下,方法多種,不過以訛傳訛,均不能完美解決實際問題。 網上的基本思路差不多一樣, 都是通過修改 Moodle 安裝資料夾下的.... Mo

內外同時訪問的路由配置

class blog ip) 內外網 刪除 div body clas 靜態路由 刪除原路由 route delete 0.0.0.0 為外網添加靜態路由 查看外網網關:假設為192.168.70.0 route add -p 0.0.0.0 mask 0.0.0.

伺服器如何設定IP及路由資訊使內外同時訪問

有些公司或單位出於網路安全的角度考慮,經常會構建自己的公司內網(區域網)。同時員工又有上網的需求,經常會設定一些上網伺服器,即內部網路通過上網伺服器進行上網。在網路搭建的過程中,我們應該如何對伺服器的IP及路由進行設定呢。本人在此舉一個簡單的小栗子; 網路描述: 例如:內網IP段為10.10

windows使用L2TP連線VPN後設置內外同時訪問

1.進入網路和共享中心--->更改介面卡--->選擇vpn連線,右擊--->網路選項--->雙擊:Internet協議版本4--->高階--->取消勾選在遠端網路上使用閘道器2.使用管理員身份開啟cmd.exe,新增路由:"route ad

Centos 7.5 雙絡卡內外同時訪問路由設定

說明:伺服器有兩張網絡卡分別是eth0、eth1,eth0配置內網IP:192.168.1.1/24,eth1配置外網IP:10.1.1.1/24;要求192.168.0.0/16網段走網絡卡eth0,閘道器是192.168.1.254,其餘網段走網絡卡eth1

如何設定膝上型電腦內外同時訪問

做OA實施專案,經常遇到政府機關是內網登入的,為了方便內網外網同時訪問,同時工作,有線網路上內網。無線上外網。新建txt檔案另存為bat:route delete 0.0.0.0route delete 10.64.0.0route add 0.0.0.0 mask 0.0.

虛擬機器(伺服器)配置雙絡卡實現內外同時訪問

Step1 虛擬機器硬體新增網絡卡 將網線連結至物理伺服器 開啟配置-網路 ,選擇新增網路 連線型別選擇虛擬機器 ,下一步 選擇建立vSphere標準交換機 並正確選擇網線連線的網絡卡,下一步

設定內外同時訪問方法

設定內外網同時訪問時,本機連線不要設定閘道器,然後執行如下命令即可: 設定內網的網段:192.168.60.0 子網掩碼:255.255.255.0  閘道器:192.168.52.254 route add 192.168.60.0 mask 255.255.255

內外同時使用解決辦法

pri src 關機重啟 let 外網 ima 技術分享 查看 mask 1.內網IP地址為:10.1.14.56 子網掩碼:255.255.255.128 網關:10.1.14.126 2.外網為自動獲取IP地址 CMD命令:route -p add 10.1.1

Win10設定VPN實現公司內外同時連線的技巧

VPN屬於遠端訪問技術,簡單地說就是利用公用網路架設專用網路。例如某公司員工出差到外地,他想訪問企業內網的伺服器資源,這種訪問就屬於遠端訪問。在企業網路中有廣泛應用。VPN閘道器通過對資料包的加密和資料包目標地址的轉換實現遠端訪問。VPN有多種分類方式,主要是按協議進行分類。VPN可通過伺服器、硬體、軟體

解決k8s 外無法訪問nodePort問題-yellowcong

部署玩k8s後,自動部署了一個java的web專案,然後本地訪問都好使,就是外部訪問,就是不好使,搞了半天,後來發現了,由於k8s的的iptables導致的,設定轉發,即可解決這個問題。 ip

內外同時執行路由設定

內外網路由設定 內網提供區域網,外網提供網際網路 命令控制檯輸入命令: 1. route delete 0.0.0.0 2. (無線網路的閘道器)route -p add 0.0.0.0 mask 0.0.0.0 192.168.43.1(無線的IP

linux下內外同時工作

    又要使用公司內網收郵件, 又要使用wifi上外網     為了這個問題,百度了下,都是抄來抄去的文章,好煩。解決方法,就是使用route命令,修改靜態路由表。方法: 1. 檢視eth0 IP 和 wifi IP 2. 修改靜態路由      a.    sudo

解決絡卡機器同時訪問內外的問題

以前為了方便測試,我在自己的電腦(不是伺服器)安裝了雙網絡卡,雙網絡卡接入的是兩個不同的網路但都可上網。最近為了搭建和測試VPN,我將其中一塊網絡卡接入一個小型內網(即不能訪問Internet),此時便遇到問題:只能訪問那個小型內網,卻無法訪問Internet,經查閱眾多

同時訪問內外

雙網卡上網為了方便自己在一臺機器上同時訪問內網和外網,自己對系統路由作了一點點更改,既方便了自己,又學習到了相關的路由知識。    網絡環境(我辦公室真實的網絡環境):  1、一臺主機;  2、兩張網卡;  3、外網通過SOHO路由器上ADSL,網關為192.168.0.1,本機外網IP為192.168.0.

永久解決 重郵 同時內外解決內網上不了!

很多情況下,重郵學子在連線netkeeper後會出現內網上不去的現象! 下載檔案: https://download.csdn.net/download/lanluyug/10773505 解決方案: 1. 管理員許可權執行該檔案; 2. 按提示輸入閘道器,也就是*.*

MAC同時通過有線和無線訪問內外的設定方法

需求: 使用無線訪問外網。 使用網線訪問內網。 解決方法: 1.在網路設定中,調整網路順序。 wifi第一,有線第二。 2.進入控制檯,刪除預設路由。 route -n delete 0.0.0.

解決內外無法同時使用

cd C:\Windows\System32 route delete 0.0.0.0 route add 10.0.0.0 mask 255.0.0.0 172.16.22.254 route add 0.0.0.0 mask 0.0.0.0 172.16.22.254

絡卡同時內外解決方法

試過網上N多方法,都只能實現斷掉外網才能上內網 後來查到某同學分享的方法試了一下發現居然可以了,現在將具體內容寫下來備用! 使用Win10系統,外網使用無線網絡卡,內網使用網線 外網先不連線,內網連線設定好IP,掩,不設定閘道器 連線外網,設定IP,掩碼,閘道器,DNS

臺式電腦設定同時訪問內外

一、網路環境(單網絡卡) 二、示例IP 外網IP:192.168.1.8 子網掩碼:255.255.255.0 閘道器:192.168.1.1 內網IP:10.18.100.8 子網掩