Tengo un servidor LAMP configurado para servir VHOST. El problema aquí es que cuando intento acceder a través de la misma LAN, parece que intento acceder a la dirección IP local y no a la dirección VHOST. Sin embargo, cuando intento acceder al servidor desde fuera, muestra el VHOST correcto. Necesito configurar Apache para que de alguna manera sirva al sitio correcto y no al sitio predeterminado. ¿Cómo hago esto?
Aquí hay un ejemplo de dos de mis entradas de VHOST.
Por defecto
<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>
Otro sitio
<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>
Respuesta1
Esto no es culpa de Apache. Las directivas de VirtualHost no funcionan para solicitudes vía IP. La computadora en su LAN desde la cual accede al sitio verifica los servidores DNS y, como resultado, obtiene una IP externa. Si el servidor está en la misma red, entonces un enrutador adecuado en su red debería resolverlo/enrutarlo correctamente, pero este no siempre es el caso con algunos enrutadores.
Para probar esto, en un cliente agregue una entrada DNS personalizada para su dominio y asigne la IP interna de su servidor. Edite /etc/hosts
si el cliente es Linux o C:\Windows\system32\drivers\etc\hosts
si el cliente es Windows y agregue esto (cambie 10.0.0.1 con la IP interna de su servidor):
10.0.0.1 domain.com
Actualizar: Si la solución con DNS funciona, lo que puede hacer es configurar un servidor DNS personalizado en su red interna que le permitirá configurar entradas DNS personalizadas. De esta manera no necesitará configurarlo manualmente en los clientes.