Доступ к виртуальному хосту в локальной сети

Доступ к виртуальному хосту в локальной сети

У меня есть сервер LAMP, настроенный на сервер VHOST. Проблема в том, что когда я пытаюсь получить к нему доступ через ту же локальную сеть, я, кажется, пытаюсь получить доступ к локальному 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

Это не вина Apache. Директивы VirtualHost не работают для запросов через IP. Компьютер в вашей локальной сети, с которого вы заходите на сайт, проверяет 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. Таким образом, вам не придется вручную устанавливать его на клиентах.

Связанный контент