nginx перенаправляет все https URL на единственный серверный блок 443 - PullRequest
0 голосов
/ 12 мая 2018

Я настроил три серверных блока на моем сервере nginx: 2 прослушивания на 80 (http) и один прослушивание на 443 (https).

Файл конфигурации блока https для сервера выглядит следующим образом:

server {
server_name foo.example.com;

location / {
    root  /var/nginx_root/yt/html;
    index  index.html index.htm;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/........ # managed by Certbot
ssl_certificate_key /etc/...... # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/.......
}

server {
    if ($host = foo.example.com {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen  80;
    server_name foo.example.com;
    return 404; # managed by Certbot

}

В блоках сервера http тоже задано имя_сервера.

Эти блоки сервера работают хорошо, но если я введу любой URL-адрес https, отличный от определенного в блоке сервера https, он будет перенаправлен наhttps://foo.example.com!

Например, если я введу https: blabla.example.com, он будет перенаправлен на https: foo.example.com

Кажется, что, поскольку существует только одинБлок https, все запросы https идут на этот, независимо от имени_сервера!

Что мне нужно, так это то, что если я введу https: blabla.example.com, он вернет 404, поскольку блока с этим именем_сервера не существует.

Спасибо

...