Почему `443 default_server ssl` работает для нескольких серверных имён в nginx?

Я запускаю nginx для работы со статическим контентом и как прокси-сервер Apache/mod_wsgi, обслуживающий django. У меня есть example.com и test.example.com в качестве прокси-сервера к Apache/Django и static.example.com, который обслуживает все статические файлы непосредственно через nginx. У меня есть подстановочный SSL-сертификат, так что каждый из этих субдоменов может использовать SSL (и у меня только один IP).

Почему при использовании listen 443 default_server ssl; в либо test.example.com , либо example.com, SSL работает для обоих, но я должен явно прослушивать 443 для статики. example.com?

ssl_certificate         /etc/ssl/certs/example.chained.crt;
ssl_certificate_key     /etc/ssl/private/example.key;

server {
    listen      80;
    listen      443;
    server_name static.example.com;
    # ... serves content ...
}

server {
    listen       80;
    listen      443 default_server ssl;
    server_name  example.com;
    # ... proxy pass to http://example.com:8080 (apache) ...
}
server {
    listen      80;
    # why don't I need `listen 443;` here?
    server_name test.example.com;
    # ... proxy pass to http://test.example.com:8080 (apache) ...
}
5
задан Micah Carrick 14 September 2011 в 20:08
поделиться