Configurando o Nginx para capturar todos os vhosts não manipulados

41

Se eu já tenho vários virtualhosts, como posso criar um host virtual para lidar com solicitações que não correspondem a nenhum virtualhosts? (ou seja, acesso por IP, outro domínio vinculado a IP, .etc .etc)

SandyD
fonte

Respostas:

52

nome do servidor _; e default_server na configuração de escuta são o que você está procurando.

Exemplo:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}
Brian P
fonte
11
E para o caso https:listen 443 ssl default_server;
James T Snell
Quando eu ativar isso, o meu owncloud 9não responderá. Por quê? O Owncloud VHOST possui um server_name e não é default_server.
Corni
Eu não uso 80apenas 443 está aberto.
Corni
Se eu adicionar isso, meus outros trechos de configuração em / etc / nginx / sites-enabled / serão ignorados. todos os domínios acessam /var/www/defaultneste caso. Como preciso solicitar os trechos?
rubo77
Posso criar um vhos para conexões postgresql?
Erlon Charles 14/09
4

Se você usar SSL, precisará de algum encanamento extra para um servidor padrão - certificado e chave (que podem ser autoassinados).

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

O Nginx tentará aceitar a conexão SSL em um servidor_servidor padrão com IP / porta. Se esse servidor estiver faltando cert / key, o nginx interromperá a conexão. Não tentará outros servidores. Portanto, não esqueça de cert / key.

andreycpp
fonte
Nota importante sobre o certificado SSL! Se o certificado estiver ausente, o servidor nginx inteiro não será executado (mesmo que seja nginx -t"ok")
Philipp
3
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

As entradas são para a porta 80 (HTTP), porta 443 (HTTPS), porta 80 IPv6 e porta 443 IPv6, respectivamente.

Você pode considerar adicionar log_not_found off;para evitar adicionar uma entrada de log para a página não encontrada.

Zaz
fonte