У меня есть сервер 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>
Это не вина 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. Таким образом, вам не нужно будет устанавливать его вручную на клиентах.