Como posso adicionar um host virtual para atender às solicitações de um CNAME (funcionando)?

2

Em uma máquina do AWS EC2, no arquivo /etc/httpd/conf/httpd.conf , eu tinha essa configuração do servidor:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.example.com
    DocumentRoot /var/www/html
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    <Directory /var/www/html/zf2-tutorial/public>
    DirectoryIndex index.php
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

Isso está fazendo um ótimo trabalho ao lidar com o tráfego "www.example.com" e, quando eu solicito "www.example.com/Workstream", recebo o aplicativo que mora em /var/www/html/Workstream .

Então, sentindo-me bem comigo mesmo, decido que quero ser chique e ter a rota do servidor da web " fluxo de trabalho .example.com" para /var/www/html/Workstream (seguindo o A documentação do Apache VirtualHost e exemplos ).

Então, eu pego o CNAME com um alias para o registro A relevante - pronto, funcionando, ótimo. Então, fixei minhas vistas no arquivo httpd.conf para adicionar esse <VirtualHost> logo atrás do existente:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName workstream.example.com
    DocumentRoot /var/www/html/Workstream
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
</VirtualHost>

Eu salvei a edição e reiniciei o apache ( sudo /usr/sbin/apachectl restart - não sei porque meu apache não está onde todos os outros estão) e apontei um navegador para "workstream.example.com" e ... recebi o conteúdo de /var/www/html . A reinicialização retornou este aviso:

[warn] default VirtualHost overlap on port 80, the first has precedence

Eu sou um noob do Linux, é doloroso. O que estou fazendo de errado? Estou editando o httpd.conf correto (usando find / -xdev 2>/dev/null -name "httpd.conf" , vejo que há outro httpd.conf em /opt/railo/sys/httpd.conf )? O ServerName precisa corresponder a algo que eu não configurei? Minha sintaxe está incorreta?

O resultado de sudo /usr/sbin/apachectl -S é:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost workstream.example.com (/etc/httpd/conf/httpd.conf:1020)
Syntax OK
    
por Jeromy French 17.09.2013 / 23:47

3 respostas

2

Você tem uma diretiva NameVirtualHost *:80 (consulte " Diretiva NameVirtualHost ") em algum lugar na sua configuração? Caso contrário, ele será tratado como um host virtual baseado em IP, que ignora o cabeçalho Host enviado pelo navegador.

    
por 17.09.2013 / 23:51
2

A diretiva NameVirtualHost *:80 deve ser o que você precisa para eliminar esse erro. O Apachectl capta isso, então minha suspeita é que o apache não está sendo adequadamente recarregado. ... Não é esse cara ... mas você já tentou reiniciar ?

...

...

A alternativa é matar todos os pdds do httpd listados em ps -ef e começar?

    
por 20.09.2013 / 03:02
0

Se todas as solicitações forem armazenadas em cache por um virtualhost, talvez esteja faltando o link

<VirtualHost _default_:80>
   DocumentRoot /var/www/html
</VirtualHost>
    
por 22.09.2013 / 02:26