
La información de mi servidor es
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 19 2015 21:43:13
Estoy intentando configurar un host virtual para 2 sitios diferentes: biz.example.com y pin.example.com, que están alojados en el mismo servidor. Hay 2 carpetas diferentes ubicadas en 'var/www/html/' denominadas 'biz' y 'pin' con sus respectivos archivos de proyecto para los 2 sitios web mencionados anteriormente. Estoy intentando configurarlo de la siguiente manera.
Dentro de /etc/hosts debajo de la configuración
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
xxx.xxx.xxx.xxx biz.example.com
xxx.xxx.xxx.xxx pin.example.com
xxx.xxx.xxx.xxx se reemplaza por la dirección IP del servidor.
Dentro de /etc/httpd/conf/httpd.conf
IncludeOptional sites-enabled/*.conf
Ahora, en /etc/httpd/sites-available hay los archivos biz.conf y pin.conf. También tengo la carpeta sitios habilitados en /etc/httpd que tiene 2 archivos que apuntan a biz.conf y pin.conf de la carpeta de sitios disponibles usando el siguiente comando
ln -s /etc/httpd/sites-available/biz.conf /etc/httpd/sites-enabled/biz.conf
ln -s /etc/httpd/sites-available/pin.conf /etc/httpd/sites-enabled/pin.conf
biz.conf tiene lo siguiente
<VirtualHost *:80>
ServerName http://biz.example.com/
ServerAlias http://biz.example.com/
DocumentRoot "/var/www/html/biz"
<directory "/var/www/html/biz">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Allow from 127.0.0.1
</directory>
</VirtualHost>
Y la configuración dentro del archivo pin.conf se menciona como
<VirtualHost *:80>
ServerName http://pin.example.com/
ServerAlias http://pin.example.com/
DocumentRoot "/var/www/html/pin"
<directory "/var/www/html/pin">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Allow from 127.0.0.1
</directory>
</VirtualHost>
En esta configuración, si intento accederhttp://biz.ejemplo.com/, se está cargando el sitio web correcto (sitio web de negocios). Pero si intento accederhttp://pin.ejemplo.com/, entonces también se está cargando el sitio web de negocios en lugar de fijar el sitio web. La configuración múltiple no funciona en conjunto.
También intenté fusionar la configuración virtual de biz.conf y pin.conf en un solo archivo, biz.conf, pero no funcionó tan bien.
Respuesta1
Respuesta:
1) Debe eliminar la barra diagonal final de ServerName y ServerAlias
2) Aquí, podemos eliminar ServerAlias, así como ServerName y ServerAlias, ambos iguales.
Respuesta2
Elimina las comillas dobles de tu ruta
DocumentRoot /var/www/html/pin
<directory /var/www/html/pin>
Respuesta3
En esta configuración, si intento accederhttp://biz.ejemplo.com/, se está cargando el sitio web correcto (sitio web de negocios). Pero si intento accederhttp://pin.ejemplo.com/, entonces también se está cargando el sitio web de negocios en lugar de fijar el sitio web.
Esto se debe a que las directivas ServerName
y ServerAlias
no coinciden (sintaxis incorrecta) y en este caso la primera definida VirtualHost
obtiene todas las solicitudes.
El comportamiento se describe en la documentación con una configuración muy similar:
# Ensure that Apache listens on port 80 Listen 80 <VirtualHost *:80> DocumentRoot "/www/example1" ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot "/www/example2" ServerName www.example.org # Other directives here </VirtualHost>
Los asteriscos coinciden con todas las direcciones, por lo que el servidor principal no atiende solicitudes. Debido al hecho de que el host virtual
ServerName www.example.com
es el primero en el archivo de configuración, tiene la prioridad más alta y puede verse como elpor defectooprimarioservidor. Eso significa que si se recibe una solicitud que no coincide con una de lasServerName
directivas especificadas, ésta será atendida primero<VirtualHost>
.
Solución:
Debe
ServerName
estar sinhttp://
prefijo y sin barra diagonal, es decirServerName biz.example.com
y
ServerName pin.example.com
ServerAlias
se puede eliminar ya que tiene el mismo valor queServerName
<Directory>
y</Directory>
debe comenzar con mayúsculaLa antigua sintaxis de control de acceso de Apache 2.2 debe cambiarse a la nueva
Require
sintaxis de Apache 2.4.Order Deny,Allow Allow from 127.0.0.1
debe ser reemplazado por
Require local
Ver