Eu tenho um servidor LAMP configurado para servidores VHOSTs. O problema aqui é que quando tento acessá-lo pela mesma LAN, parece que tento acessar o endereço IP local e não o endereço VHOST. Porém, quando tento acessar o servidor de fora, ele exibe o VHOST correto. Preciso configurar o Apache para servir de alguma forma o site correto e não o site padrão. Como eu faço isso?
Aqui está um exemplo de duas das minhas entradas VHOST.
Padrão
<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>
Outro site
<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>
Responder1
Isso não é culpa do Apache. As diretivas VirtualHost não funcionam para solicitações via IP. O computador em sua LAN a partir do qual você está acessando o site verifica os servidores DNS e, como resultado, obtém IP externo. Se o servidor estiver na mesma rede, um roteador adequado na sua rede deverá resolvê-lo/roteá-lo corretamente, mas esse nem sempre é o caso de alguns roteadores.
Para testar isso, em um cliente, adicione uma entrada DNS personalizada para seu domínio, mapeando-o para o IP interno do seu servidor. Edite /etc/hosts
se o cliente é Linux ou C:\Windows\system32\drivers\etc\hosts
se o cliente é Windows e adicione isto (altere 10.0.0.1 com IP interno do seu servidor):
10.0.0.1 domain.com
Atualizar: Se a solução com DNS funcionar, o que você pode fazer é configurar um servidor DNS personalizado em sua rede interna, o que permitirá definir entradas DNS personalizadas. Dessa forma você não precisará configurá-lo manualmente nos clientes.