Eu tenho um arquivo chamadopga-default.confque parece,
<VirtualHost *:8008>
ServerName 192.168.1.10
DocumentRoot /var/www/portals/default/public
<Directory "/var/www/portals/default/public">
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/default.error.log
CustomLog /var/log/httpd/default.requests.log combined
</VirtualHost>
O problema é sempre que tento comhttp://192.168.1.10:8008ele sempre carrega a página padrão do Apache Testing. padrão.confparece,
Listen 8008
<VirtualHost _default_:8008>
DocumentRoot "/www/default"
</VirtualHost>
Mas quando eu mudo para <VirtualHost *:8008>
dentro<VirtualHost 192.168.1.10:8008>
pga-default.conffunciona como esperado. Eu quero saber por que isso acontece. Pelo que eu sei, isso ocorre porque o servidor não escolhe o VirtualHost como a melhor correspondência para o endereço IP e a porta específicos. (Esta resposta confirma quediferença entre _default_:* e *:* no contexto VirtualHost)
Tentei vários outros métodos também, mas nenhum deles funcionou, exceto o método mencionado acima. A seguir estão os outros métodos. (Alterações parapga-default.conf)
- Mudar
ServerName 192.168.1.10
paraServerName 192.168.1.10:8008
- Usado
ServerAlias 192.168.1.10
Observação- Com a configuração acima, <VirtualHost *:8008>
alguns dos meus colegas obtiveram resultados bem-sucedidos. Esse problema ocorreu apenas para mim.
O que eu perdi aqui? Como é que outros obtêm os resultados esperados enquanto eu não?
Responder1
Você deve sempre definir ServerName em cada host virtual.
Como provavelmente o seu "padrão" é carregado primeiro e não possui um nome de servidor específico definido, ele está capturando todas as solicitações. Você pode tentar isso facilmente definindo "ServerName default" no host virtual padrão.
Então, quando você solicitar "http://192.168.1.10:8008"agora você pousará no host virtual apropriado.
Portanto, lembre-se, a prática recomendada é sempre definir uma diretiva ServerName exclusiva em cada host virtual e considerar que quando nenhum nome de host solicitado corresponder aos virtualhosts definidos, o primeiro virtualhost receberá a solicitação, também, se você definir acidentalmente o mesmo nome de servidor em dois virtualhosts primeiro virtualhost carregado aceitará a solicitação.