Почему мои настройки конфигурации наследованы к блоку сервера субдомена?

Я использую nginx с SSL Wildcard сертификатом как этот:

/etc/nginx/sites-enabled/example.com

server {
    listen      443 default_server ssl;
    server_name 192.168.0.1 example.com;

    include /etc/nginx/ssl.conf;

    error_log   /var/log/nginx/example.com.error.ssl.log;
    access_log  /var/log/nginx/example.com.access.ssl.log;

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

    location / {
        alias /var/www/example.com/example.com/;
    }
}

server {
    listen      80;
    server_name 192.168.0.1 example.com;
    return      301 https://$server_name$request_uri;
}

/etc/nginx/ssl.conf

Включенный ssl.conf похож на это:

ssl_certificate     /etc/nginx/ssl/example.com/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/nginx/ssl/example.com/example.com_dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES256+EECDH:AES256+EDH';
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;

Мой блок сервера для субдомена похож на это:

/etc/nginx/sites-enabled/blog.example.com

server {
    listen      443;
    server_name blog.example.com;

    error_log   /var/log/nginx/blog.example.com.error.ssl.log;
    access_log  /var/log/nginx/blog.example.com.access.ssl.log;

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

    location / {
        proxy_pass http://localhost:2368/;
        proxy_set_header Host $host;
        proxy_buffering off;
        autoindex  off;
    }
}

server {
    listen      80;
    server_name blog.example.com;
    return      301 https://$server_name$request_uri;
}

https на субдомене хорошо работает, но я хотел бы знать, почему он работает и почему blog.example.com наследовал настройки от example.com даже при том, что ssl.conf не включен в тот блок сервера.

Я ничего не мог найти в nginx документации о наследовавшихся настройках от default_server.

Это - просто ожидаемое поведение с Wildcard-сертификатом?

Спасибо!

2
задан 22 December 2014 в 20:41
2 ответа

И покрај тоа што не го покажувате главниот nginx.conf Се сомневам дека вашиот ssl.conf е вклучен во http ниво во конфигурација на nginx.

Практично, сите поставки за ниво на http се наследуваат во блоковите на сервер во nginx. Погледнете во http://blog.martinfjordvald.com/2012/08/und разбирање- the-nginx-configuration-inheritance-model/ за повеќе информации за тоа како функционира директивното наследство во nginx.

1
ответ дан 3 December 2019 в 14:53

На самом деле это ожидаемое поведение согласно документации :

SSL-соединение устанавливается до того, как браузер отправит HTTP. request и nginx не знает имени запрашиваемого сервера. Поэтому он может предложить только сертификат сервера по умолчанию.

Этого можно избежать, используя различные IPs:

Следует иметь в виду, что из-за ограничений протокола HTTPS виртуальные серверы должны прослушивать различные IP-адреса, иначе Первый сертификат сервера будет выдан на второй сайт.

-1
ответ дан 3 December 2019 в 14:53

Теги

Похожие вопросы