存取 LAN 上的虛擬主機

存取 LAN 上的虛擬主機

我有一個配置為伺服器 VHOST 的 LAMP 伺服器。這裡的問題是,當我嘗試透過同一區域網路存取它時,我似乎嘗試存取本地IP位址而不是VHOST位址。但是,當我嘗試從外部存取伺服器時,它會顯示正確的 VHOST。我需要配置 apache 以某種方式為正確的網站而不是預設網站提供服務。我該怎麼做呢?

這是我的兩個 VHOST 條目的範例。

預設

<VirtualHost *:80>
    ServerAdmin [email]
    ServerName eresk.fi

    DocumentRoot /home/web/apache-webserver/public_html/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/web/apache-webserver/public_html/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /home/web/apache-webserver/cgi-bin/
    <Directory "/home/web/apache-webserver/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

另一個網站

<VirtualHost *:80>
    ServerAdmin [email]
    ServerName diggety.net
    ServerAlias *.diggety.net

    DocumentRoot /home/web/diggety/public_html/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/web/diggety/public_html/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /home/web/diggety/cgi-bin/
    <Directory "/home/web/diggety/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    <IfModule php5_mod.c>
            php_value session.gc_maxlifetime 604800
    </IfModule>


    ErrorLog ${APACHE_LOG_DIR}/error_diggety.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access_diggety.log combined
</VirtualHost>

答案1

這不是阿帕契的錯。 VirtualHost 指令不適用於透過 IP 的請求。您造訪網站的 LAN 中的電腦會檢查 DNS 伺服器並取得外部 IP 結果。如果伺服器位於同一網路上,那麼網路上的適當路由器應該正確解析/路由它,但某些路由器並非總是如此。

若要對此進行測試,請在用戶端上為您的網域新增自訂 DNS 項目,將其對應到伺服器的內部 IP。/etc/hosts如果用戶端是 Linux 或Windows 上的用戶端,請編輯C:\Windows\system32\drivers\etc\hosts並新增此內容(將 10.0.0.1 變更為伺服器的內部 IP):

10.0.0.1 domain.com

更新:如果 DNS 解決方案有效,您可以在內部網路上設定自訂 DNS 伺服器,這將允許您設定自訂 DNS 項目。這樣您就不需要在客戶端上手動設定它。

相關內容