Eu uso o nginx com um certificado de caractere curinga ssl assim:
/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
O ssl.conf
incluído é assim:
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;
Meu bloco de servidores para o subdomínio tem esta aparência:
/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;
}
link por que está funcionando e porque blog.example.com está herdando as configurações de example.com mesmo que o ssl.conf não esteja incluído nesse bloco de servidor.
Não consegui encontrar nada na documentação do nginx sobre como herdar configurações do default_server.
É apenas o comportamento esperado com um certificado curinga?
Obrigado!