2010-02-09 8 views
5

Estoy tratando de alojar dos sitios web usando Apache desde el mismo servidor Ubuntu. Tengo una dirección IP, y solo tengo un dominio (que se resuelve en la dirección IP). Por lo tanto, quiero que las solicitudes al nombre de dominio den un sitio web y las solicitudes a la dirección IP para que den el otro.Sirviendo dos sitios web con Apache con un solo nombre de dominio y una sola dirección IP

Tengo enlaces simbólicos en/etc/apache2/sites-enabled a dos archivos, apuntando a la configuración para mis dos sitios.

Uno contiene:

<VirtualHost 1.2.3.4:80> 
    ServerName 1.2.3.4 
    stuff 
</VirtualHost> 

mientras que el otro contiene

<VirtualHost domain.net:80> 
    ServerName domain.net 
    stuff 
</VirtualHost> 

Sin embargo, cuando arranco Apache, me sale el siguiente mensaje:

[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive 

y cuando señalo mi navegador en domain.net o 1.2.3.4 Obtengo el sitio que quiero asociar con la dirección IP.

Si elimino el enlace simbólico, al señalar un navegador en el nombre de dominio o la dirección IP aparece el único sitio web habilitado. (Como era de esperar.)

Según tengo entendido, ambos archivos de configuración en sitios habilitados se están cargando a la vez, y el que contiene la dirección IP supera el que contiene el nombre de dominio. La advertencia sugiere consultar la directiva NameVirtualHost, pero toda la ayuda que puedo encontrar en línea se refiere a casos en los que tiene dos nombres de dominio que apuntan a la misma dirección IP.

Como siempre, y la ayuda o consejo sería muy apreciada.

(Por si sirve de algo, los sitios web son los dos rieles aplicaciones, y estoy despliegue utilizando pasajeros, pero no creo que eso es importante aquí.)

+0

su información, preguntas como éstas son mejor servidos en serverfault.com –

Respuesta

9

Esto es cómo lo hago:

NameVirtualHost 1.2.3.4:80 

<VirtualHost 1.2.3.4:80> 
    ServerName localhost 
    DocumentRoot /var/www/default 
</VirtualHost> 

<VirtualHost 1.2.3.4:80> 
    ServerName mydomain.net 
    DocumentRoot /var/www/mydomain 
</VirtualHost> 

Apache busca un servidor virtual adecuado para cada solicitud. Si no encuentra uno que coincida con ServerName o cualquiera de los ServerAliases, entonces toma el primero. En realidad, no importa lo que use para el ServerName en el primer VirtualHost, ya que siempre se utilizará si ninguno de los otros VirtualHosts coincide.

+0

Amigo, muchas gracias. – grifaton

+0

¡Gracias, gracias, gracias! He estado tratando de averiguar cómo evitar que Apache publique contenido aleatorio cuando alguien hace una solicitud de IP y ahora lo sé. :) – johnjohn

+1

¿Así que usaste un archivo virtualhost para los 2 dominios? – Alucard

0

asegurarse de que tiene la instrucción

NameVirtualHost *:80 

en /etc/apache2/ports.conf

4

tenido este problema, esto es lo que hice:

Editar httpd.Conf

sudo vi /etc/apache2/httpd.conf 

añadir esta línea

NameVirtualHost *:80 

NOTA: Puede reemplazar *: 80 con your_ip_address: 80

Ahora crea el fichero de configuración de nombre de dominio. Yo uso el domain_name.com

sudo vi /etc/apache2/sites-available/domain.com 

Esto, unido al archivo

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.domain.com 
    ServerAlias domain.com 
    DocumentRoot /var/www/domain.com/public_html/ 
    ErrorLog /var/www/domain.com/logs/error.log 
    CustomLog /var/www/domain.com/logs/access.log combined 
</VirtualHost> 

Asegúrese de que los directorios de la configuración domain.com existe

/var/www/domain.com/public_html/ 
/var/www/domain.com/logs 

NOTA: utilice el comando mkdir como esto si es necesario

sudo mkdir /var/www/domain.com/public_html/ 
sudo mkdir /var/www/domain.com/logs 

Ahora tenemos que habilitar el nuevo archivo de configuración como esta

sudo a2ensite domain.com 

Debería ver un aviso para reiniciar Apache, utilice este comando

/etc/init.d/apache2 restart 

Ahora necesitamos un archivo de prueba para ver

sudo vi /var/www/domain.com/public_html/index.html 

añadir un texto

Hello domain.com 

Abra su navegador Web y vaya a su nuevo dominio

http://domain.com 
Cuestiones relacionadas