
As informações do meu servidor são
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 19 2015 21:43:13
Estou tentando configurar o host virtual para dois sites diferentes: biz.example.com e pin.example.com, que estão hospedados no mesmo servidor. Existem 2 pastas diferentes localizadas em 'var/www/html/' chamadas 'biz' e 'pin' com seus arquivos de projeto respeitados para os 2 sites mencionados acima. Estou tentando configurá-lo da maneira abaixo.
Dentro de /etc/hosts abaixo da configuração
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 é substituído pelo endereço IP do servidor.
Dentro de /etc/httpd/conf/httpd.conf
IncludeOptional sites-enabled/*.conf
Agora, em /etc/httpd/sites-available existem os arquivos biz.conf e pin.conf. Eu também tenho a pasta sites-enabled em /etc/httpd que possui 2 arquivos que apontam para biz.conf e pin.conf da pasta sites-available usando o comando abaixo
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 tem o seguinte
<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>
E a configuração no arquivo pin.conf é mencionada 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>
Nesta configuração, se eu tentar acessarhttp://biz.example.com/, o site correto (site de negócios) está sendo carregado. Mas se eu tentar acessarhttp://pin.example.com/, então o site de negócios também está carregando em vez do site fixado. A configuração múltipla não está funcionando em conjunto.
Também tentei mesclar a configuração virtual de biz.conf e pin.conf em um único arquivo, biz.conf, mas não funcionou tão bem.
Responder1
Responder:
1) É necessário remover a barra final de ServerName e ServerAlias
2) Aqui, podemos remover ServerAlias, bem como ServerName e ServerAlias, ambos iguais.
Responder2
Remova aspas duplas do seu caminho
DocumentRoot /var/www/html/pin
<directory /var/www/html/pin>
Responder3
Nesta configuração, se eu tentar acessarhttp://biz.example.com/, o site correto (site de negócios) está sendo carregado. Mas se eu tentar acessarhttp://pin.example.com/, então o site de negócios também está carregando em vez do site fixado.
Isso ocorre porque as diretivas ServerName
and ServerAlias
não correspondem (sintaxe errada) e, neste caso, a primeira definida VirtualHost
recebe todas as solicitações.
O comportamento é descrito na documentação com uma configuração muito semelhante:
# 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>
Os asteriscos correspondem a todos os endereços, portanto o servidor principal não atende solicitações. Devido ao fato do host virtual
ServerName www.example.com
estar em primeiro lugar no arquivo de configuração, ele tem a prioridade mais alta e pode ser visto como opadrãoouprimárioservidor. Isso significa que se for recebida uma solicitação que não corresponda a uma dasServerName
diretivas especificadas, ela será atendida primeiro por esta<VirtualHost>
.
Solução:
Deve
ServerName
ser semhttp://
prefixo e sem barra final, ou sejaServerName biz.example.com
e
ServerName pin.example.com
ServerAlias
pode ser removido, pois tem o mesmo valor queServerName
<Directory>
e</Directory>
deve começar com letra maiúsculaA antiga sintaxe de controle de acesso do Apache 2.2 deve ser alterada para a nova
Require
sintaxe do Apache 2.4.Order Deny,Allow Allow from 127.0.0.1
deverá ser substituído por
Require local
Ver