Nginx ignorando server_name

2

Eu tenho um site em execução em um servidor da Web Nginx que é executado em HTTPS. Percebi recentemente que alguém apontou o domínio para o servidor da web e o Nginx está exibindo meu site para esse domínio ruim. Parece que está até indexando no google ...

Configuração do Nginx:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/nginx/ssl/example.com/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    root /var/www/example.com;
    index index.html;
}

Eu tentei adicionar uma instrução if para verificar se o $host corresponde ao server_name conforme recomendado aqui

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/nginx/ssl/example.com/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

      # Check if incoming hostname matches server_name 
      if ($host != $server_name) {
        # If not, return 404
        return 404;
      }

    root /var/www/example.com;
    index index.html;
}

Esta adição não parece ajudar. Alguma coisa está no caminho certo? Qualquer sugestão seria muito apreciada

    
por slehmann36 20.07.2017 / 06:43

2 respostas

1

I have a website running on an Nginx web server which runs over HTTPS. I noticed recently that someone has pointed their domain to my web server and Nginx is serving my website to this bad domain. It looks like it's even indexing in google...

A melhor maneira de lidar com isso ou com uma situação semelhante é criar um catch-all-server-block> . Por exemplo, aqui está o que eu tenho para servir outros domínios que são apontados para o IP do meu servidor.

server {
    listen 80 default_server;
    server_name _;

    # deny all
    location / {
        return 403;
    }
}

Espero que ajude!

    
por 20.07.2017 / 06:50
1

Criar um servidor catch-all seria a melhor opção. Você poderia return 404; , como sugerido, ou redirecionar tudo para o nome do host canônico; Isso resolveria o problema com os mecanismos de busca.

Aqui está minha alternativa com uma configuração completa:

server {
    # catch-all server for both http and https
    listen *:80 default_server;
    listen *:443 default_server;
    server_name _;

    # Your SSL configuration
    ssl_certificate     /etc/nginx/ssl/example.com/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    # Redirect to canonical site
    rewrite ^/(.*)$ http://example.com/$1 permanent;
}
    
por 20.07.2017 / 08:25