Como fazer o redirecionamento de Nginx para 404 se o subdomínio não existir no domínio localhost

1

Esta é a configuração do meu servidor localhost para o Nginx. Isso está em /etc/nginx/sites-enabled/development/localhost

server {
    listen 80 default_server;
    server_name localhost;
    root /var/www/html;
    index index.nginx-debian.html;

    location / {
      internal;
    }

    error_page 404 /404.html;
    location /404.html {
      root /var/www/html/errors;
      internal;
    }

}

Se eu chamar http://locahost na barra de URL, um erro de página 404 será exibido. Mas deve mostrar index.nginx-debian.html . Mas se eu chamar http://localhost com um subdomínio válido, isso funcionará. Assim como http://users.localhost , definido em /etc/nginx/sites-enabled/development/users .

Eu quero mostrar a página padrão do Nginx se eu só chamar http://localhost , 404.html se o subdomínio não existir e outra página qualquer se eu chamar http://localhost corretamente com um subdomínio definido.

    
por rplaurindo 05.12.2017 / 04:14

1 resposta

0

Eu resolvi como segue.

Em /etc/nginx/sites-enabled/development/default .

server {
  listen 80 default_server;
  server_name *.localhost *.<host-name>;
  root /var/www/html/errors/404;

  location / {
    index subdomain.html;
  }

}

Em /etc/nginx/sites-enabled/development/localhost .

server {
    listen 80;
    server_name = localhost;
    root /var/www/html;
    index index.nginx-debian.html;

    # to URI errors caused by paths after domain
    error_page 404 /domain.html;
    location = /domain.html {
        root /var/www/html/errors/404;
        internal;
    }
}

Não sei se essa solução é a melhor, por isso, se alguém tiver uma solução melhor, poste aqui. Obrigado.

    
por 05.12.2017 / 21:49