Subdomínios inválidos sendo redirecionados para outro domínio

3

Eu tenho dois domínios hospedados no mesmo servidor. Nos registros DNS eu tenho curinga (*) registros para os dois domínios apontados para o servidor.

Por isso, estou esperando que xyz.domain1.com resolva para domain1.com e xyz.domain2.com a domain2.com .

No entanto, atualmente, tudo, exceto o subdomínio www em domain2.com , está redirecionando para domain1.com .

Eu tenho a configuração nginx idêntica para os dois domínios, então não entendo o que poderia estar causando isso. Isto é como minha configuração do nginx se parece -

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /dev/stdout  main;
    sendfile        on;
    keepalive_timeout  65;

    # Listen for non-HTTPS requests and redirect them to HTTPS
    server {
        server_name www.domain1.com domain1.com;
        return 301 https://domain1.com$request_uri;
    }

    # Listen for www requests with HTTPS and redirect them to non www site 
    server {
        listen 443 ssl;
        server_name www.domain1.com;
        ssl_certificate     /etc/letsencrypt/live/www.domain1.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.domain1.com/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        return 301 https://domain1.com$request_uri;
    }

    # Listen for non-www HTTPS requests and serve the app
    server {
        listen              443 ssl;
        #add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        server_name         domain1.com api.domain1.com;
        ssl_certificate     /etc/letsencrypt/live/www.domain1.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.domain1.com/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;

        location ^~ /.well-known/ {
            root   /usr/share/nginx/html;
            allow all;
        }

        location / {
            root /var/www/domain1;
        }
    }




    # Listen for non-HTTPS requests and redirect them to HTTPS
    server {
        server_name www.domain2.com domain2.com;
        return 301 https://domain2.com$request_uri;
    }

    # Listen for www requests with HTTPS and redirect them to non www site
    server {
        listen 443 ssl;
        server_name www.domain2.com;
        ssl_certificate     /etc/letsencrypt/live/www.domain2.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.domain2.com/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        return 301 https://domain2.com$request_uri;
    }


    # Listen for non-www HTTPS requests and serve the app
    server {
        listen              443 ssl;
        #add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        server_name         domain2.com;
        ssl_certificate     /etc/letsencrypt/live/www.domain2.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.domain2.com/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;

        location ^~ /.well-known/ {
            root   /usr/share/nginx/html;
            allow all;
        }

        location / {
            root /var/www/domain2;
        }
    }
}

Como posso manter os domínios separados para que os subdomínios de cada um sejam redirecionados para o domínio correto?

    
por charsi 16.09.2017 / 15:03

1 resposta

5

Você deve incluir uma entrada curinga server_name para cada domínio para selecionar para qual domínio redirecionar. Caso contrário, server_names desconhecidos serão despachados para a primeira entrada (neste caso, um redirecionamento para domain1.com).

Adicione *.domain2.com à linha com server_name www.domain2.com e ele deverá separar os subdomínios domain2.com corretamente.

    
por 16.09.2017 / 16:46