LAN上のvhostへのアクセス

LAN上のvhostへのアクセス

私は、VHOST をサーバーするように構成された LAMP サーバーを持っています。ここでの問題は、同じ LAN 経由でアクセスしようとすると、VHOST アドレスではなくローカル IP アドレスにアクセスしようとしているように見えることです。ただし、外部からサーバーにアクセスしようとすると、正しい VHOST が表示されます。Apache を何らかの方法で構成して、デフォルト サイトではなく正しいサイトを提供する必要があります。これはどのように行うのですか?

ここに私の VHOST エントリの 2 つの例を示します。

デフォルト

<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

これは Apache のせいではありません。VirtualHost ディレクティブは IP 経由のリクエストには機能しません。サイトにアクセスしている LAN 内のコンピューターは DNS サーバーをチェックし、結果として外部 IP を取得します。サーバーが同じネットワーク上にある場合、ネットワーク上の適切なルーターが適切に解決/ルーティングするはずですが、一部のルーターでは必ずしもそうとは限りません。

これをテストするには、クライアントでドメインのカスタム DNS エントリを追加し、それをサーバーの内部 IP にマッピングします。/etc/hostsクライアントが Linux の場合、またはC:\Windows\system32\drivers\etc\hostsクライアントが Windows の場合、以下を編集して追加します (10.0.0.1 をサーバーの内部 IP に変更します)。

10.0.0.1 domain.com

アップデート: DNS を使用したソリューションが機能する場合は、内部ネットワーク上にカスタム DNS サーバーを構成して、カスタム DNS エントリを設定できます。この方法では、クライアントで手動で設定する必要はありません。

関連情報