Varios hosts virtuales en Centos 7 no funcionan juntos

Varios hosts virtuales en Centos 7 no funcionan juntos

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 ServerNamey ServerAliasno coinciden (sintaxis incorrecta) y en este caso la primera definida VirtualHostobtiene todas las solicitudes.

El comportamiento se describe en la documentación con una configuración muy similar:

Ejecutar varios sitios web basados ​​en nombres en una única dirección IP (httpd.apache.org/docs/2.4/vhosts/examples.html)

# 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.comes 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 las ServerNamedirectivas especificadas, ésta será atendida primero <VirtualHost>.


Solución:

  1. Debe ServerNameestar sin http://prefijo y sin barra diagonal, es decir

    ServerName biz.example.com
    

    y

    ServerName pin.example.com
    
  2. ServerAliasse puede eliminar ya que tiene el mismo valor queServerName

  3. <Directory>y </Directory>debe comenzar con mayúscula

  4. La antigua sintaxis de control de acceso de Apache 2.2 debe cambiarse a la nueva Requiresintaxis de Apache 2.4.

    Order Deny,Allow
    Allow from 127.0.0.1
    

    debe ser reemplazado por

    Require local
    

    Ver


información relacionada