Acessando um vhost em uma LAN

1

Eu tenho um servidor LAMP configurado para servidor VHOSTs. O problema aqui é que quando eu tento acessá-lo através da mesma LAN, parece que eu tento acessar o endereço IP local e não o endereço VHOST. No entanto, quando tento acessar o servidor de fora, ele exibe o VHOST correto. Eu preciso configurar o apache para de alguma forma servir o site certo e não o site padrão. Como faço isso?

Aqui está um exemplo de duas das minhas entradas do 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>
    
por Axel Latvala 13.05.2014 / 18:26

1 resposta

1

Isso não é culpa do apache. As diretivas VirtualHost não funcionam para solicitações via IP. O computador na sua LAN a partir do qual você está acessando o site verifica os servidores DNS e obtém o IP externo como resultado. Se o servidor estiver na mesma rede, um roteador adequado em sua rede deverá resolvê-lo / rotear adequadamente, mas isso nem sempre acontece com alguns roteadores.

Para testar isso, em um cliente, adicione uma entrada DNS personalizada para seu domínio, mapeando-a para o ip interno do seu servidor. Edite /etc/hosts se o cliente for linux ou C:\Windows\system32\drivers\etc\hosts se cliente no Windows e adicione isso (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 o servidor DNS personalizado em sua rede interna, o que permitiria definir entradas DNS personalizadas. Desta forma, você não precisará configurá-lo manualmente nos clientes.

    
por 13.05.2014 / 19:10