使託管在本機電腦上的 apache 網站可以從外部存取

使託管在本機電腦上的 apache 網站可以從外部存取

我有一個正在運行的 apache2 伺服器,在 LAN 上託管一個 Moodle 站點,可以透過 存取http://192.x.x.x/moodle。我還有一台位於 Internet 和 LAN 之間的 Linux 伺服器,具有即時 IP 位址124.x.x.x。我想讓 Moodle 網站可以透過 Internet 存取。是否可以?

本機 apache2 伺服器有一個工作配置來提供服務moodle.domain.com。實時 Linux 伺服器還有一個 apache2 伺服器託管domain.com。兩者都運行 Debian Linux

我嘗試從實時 Linux 伺服器的檔案重定向moodle.domain.com到,但是,這仍然是我從外部訪問時獲得的。192.x.x.x/etc/hostsdomain.commoodle.domain.com

當我從外部存取時,我首先在 Windows 筆記型電腦中設定主機檔案以重定向moodle.domain.com到 Linux 伺服器的即時 IP 位址。

我在這裡缺少什麼?

答案1

我透過在實時 Linux Apache 伺服器中實作 Apache 反向代理來使其工作。

對於那些正在尋找相同解決方案的人,這是我的片段/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
        ServerName moodle.domain.com
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://10.5.1.100:8080/
        ProxyPassReverse / http://10.5.1.100:8080/
</VirtualHost>

託管實際 Moodle 網站的本機 Apache 伺服器應該偵聽連接埠8080

<VirtualHost *:8080>
    ServerAdmin webmaster@local
    DocumentRoot /srv/www/moodle
    ServerName moodle.domain.com
    ServerAlias moodle.domain.com
    <Directory /srv/www/moodle>
           #Allowoverride all    ###Uncomment if required
    </Directory>
</VirtualHost>

另一個我需要調整的 Moodle 特定設定是 Moodle 設定檔/srv/www/moodle/config.php

$CFG->wwwroot = 'http://moodle.domain.com';

Moodle 最初在安裝過程中將其設定為$CFG->wwwroot = 'http://10.5.1.100/moodle';。如果您沒有安裝Moodle,則忽略此部分

答案2

在我們開始之前,我想確保您明白這樣做並不是最安全的選擇。特別是透過打開路由器端口,所以請確保您了解防火牆。

由於您有一個動態 IP(我假設),因此您不能簡單地將其綁定到您的網域。這是因為您的 IP 每隔幾個小時就會改變一次。

這個答案是基於最常見的可用路由器選項。

  1. 您必須在路由器連線中找到您的apache 伺服器,並啟動連接埠轉送(80),或者,如果您了解自己在做什麼並初始化了適當的防火牆,您可以簡單地開啟所有路由器連接埠(我強烈建議您不要這樣做除非你有防火牆)
  2. 使用免費的 DNS 服務,如 Dyn DNS(大多數最新的路由器都支援開箱即用,只需檢查設定並設定帳戶)。
  3. 建立免費的 DNS 子網域。
  4. 從您的主網域建立 DNS 規則 (CNAME)。並將其指向您建立的 dyndns 子網域。例如,moodle.example.com -> trex-moodle.exampledyndns.com。
  5. 設定您的 apache 並新增您的 dyndns 子網域。

在路由器中使用免費 dns 是最好的選擇,因為您的路由器每隔幾個小時輪換一次 IP,如果您使用此類服務,您的 dyn dns 網域將始終指向您的家庭 IP 位址。

編輯

關於第一條評論,您需要在主 Linux 伺服器上執行 nginx 代理程式。 nginx可用於託管網站domain.com和moodle.domain.com,該網站託管在同一網路的不同伺服器中。

確保您可以從 Linux 伺服器存取 Moodle 網站。 (使用ping IP)

現在在您的 nginx 中您需要進行以下設定:

server {
    listen       80;
    server_name domain.com;

        root /your/domain.com/path/goes/here ;
}

server {
    listen       80;
    server_name  moodle.trex.com;

    location / {
        proxy_pass http://192.X.X.X:80; #Your apache2 server local IP address
    }
}

為此,Linux 伺服器和 apache2 伺服器必須位於同一 192.XXX 網路下。

相關內容