Acessando um vhost em uma LAN

Acessando um vhost em uma LAN

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/hostsse o cliente é Linux ou C:\Windows\system32\drivers\etc\hostsse 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.

informação relacionada