Como configurar no nginx: site de fallback / default

5

No Apache, se 1) eu tiver vários hosts virtuais ouvindo uma porta e 2) se nenhuma solicitação corresponder a nenhum host virtual, o primeiro host virtual será o que responderá à solicitação . Por exemplo, dado que eu tenho essa configuração:

<VirtualHost *:8080>
  ServerName www.fallbacksite.com:8080
  ServerAlias *.fallbacksite.com
  # ...
</VirtualHost>

<VirtualHost *:8080>
  ServerName www.specific-site.com:8080
  ServerAlias *.specific-site.com
  # ...
</VirtualHost>

Então:

  • Quando alguém specific-site.com:8080, o segundo host virtual responderá ao pedido (não é surpresa aqui)
  • Quando alguém visita fallbacksite.com:8080, o primeiro host virtual responde a solicitação (não é surpresa aqui)
  • Quando alguém visita hellohowareyou.com:8080 (e hellohowareyou.com aponta para o servidor), o primeiro host virtual responde a solicitação

É o último cenário que estou tentando implementar com o nginx, mas não consegui ver nada no site nginx.org falando sobre isso. Eu tentei curingas excessivamente ansiosas, mas ele reclama que não é válido.

Como você faria a confiuração acima no nginx? Agradecemos antecipadamente!

    
por Ramon Tayag 28.10.2012 / 07:38

1 resposta

6

Se você quiser que apenas um host virtual específico atenda à solicitação, basta fazer o seguinte. Adicione (ou altere) a linha de escuta para incluir default_server no final. Isso servirá esse host virtual sem alterar a URL.

server {
    # Add default_server for any unresolved request
    listen 80 default_server;        
}

Se você quiser redirecionar quando um usuário atingir hellohowareyou.com , adicione um novo bloco server e redirecione para o host que deseja usar:

server {
    # Add default_server only here for any unresolved request
    listen 80 default_server;    
    server_name _;
    rewrite ^ http://fallbacksite.com$request_uri permanent;
}
    
por 28.10.2012 / 12:21

Tags