Конфигурация Nginx перенаправляет http на https только для одного домена

В начале моего файла Nginx .conf я добавил следующее перенаправление:

server {
    listen 80;
    listen [::]:80;

    server_name *.a-domain.nl;
    return 301 https://$host$request_uri;
}
server {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    listen 443;
    listen [::]:443 ipv6only=on;

    server_name *.a-domain.nl;

    ssl on;
    ssl_certificate /etc/ssl/b-domain.crt;
    ssl_certificate_key /etc/ssl/b-domain.key;

    location ~* \.(ogg|ogv|svgz|mp4|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|html|txt|htm)$ {
        root /var/www/html/mtcore/web;
        try_files $uri $uri/ $uri.html =404;
    }

    location / {
        proxy_pass http://127.0.0.1;
        proxy_http_version 1.1;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }
}
server {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    listen 80;
    listen [::]:80 ipv6only=on;

    server_name _;

    location ~* \.(ogg|ogv|svgz|mp4|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|html|txt|htm)$ {
        root /var/www/html/mtcore/web;
        try_files $uri $uri/ $uri.html =404;
    }

    location / {
        proxy_pass http://127.0.0.1;
        proxy_http_version 1.1;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }
}

Только когда я открываю в браузере следующий домен www.b-domain.nl, который обслуживается на том же сервере, Nginx также перенаправляет его на https. Я ожидаю, что Nginx перенаправляет только www.a-domain.nl?


person Tom    schedule 15.05.2017    source источник
comment
Какова конфигурация вашего сервера для www.b-domain.nl?   -  person Richard Smith    schedule 15.05.2017
comment
Привет, Ричард, я добавил полный файл конфигурации. www.b-domain.nl должен запускаться server_name _; в последнем определении сервера. Но сейчас первое определение уже перенаправляет на https.   -  person Tom    schedule 15.05.2017


Ответы (1)


Первый блок сервера является неявным сервером по умолчанию для порта 80, поэтому он обрабатывает все запросы http независимо от имени сервера. Третий блок сервера будет соответствовать только имени сервера _, что либо недопустимо, либо маловероятно.

Чтобы другой сервер блокировался по умолчанию, используйте параметр default_server в директиве listen.

Дополнительные сведения см. в этом документе.

person Richard Smith    schedule 15.05.2017