У меня есть два имени хоста с одним и тем же доменным именем, которое я хочу обслуживать по HTTP. Я получил сертификат SSL с подстановочным знаком и создал две конфигурации vhost:
Хост А
listen 127.0.0.1:443 ssl;
server_name a.example.com;
root /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
Хост Б
listen 127.0.0.1:443 ssl;
server_name b.example.com;
root /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
Тем не менее, я получаю один и тот же vhost для любого имени хоста.
nginx
ssl
virtualhost
ssl-certificate
https
vincent.io
источник
источник
ssl_certificate
иssl_certificate_key
это должно быть настроено внутриserver
или вhttp
месте. В вашем примере вы объявили его внутри первогоserver
местоположения, но не объявили его для двух других vhosts.ssl_certificate
,ssl_certificate_key
иssl
на default_server только. Кстати, этот конфиг на самом деле работает.ssl
былаlisten
директива для работы с 1.4.x nginx. Моиlisten
директивы в стихах также должны были быть буквально одинаковыми (логической эквивалентности было недостаточно).Это на самом деле объясняется в руководстве: http://nginx.org/en/docs/http/configuring_https_servers.html#certificate_with_several_names
Теперь, если у вас много сайтов, я предлагаю хранить все из них в папке с частью server {}, как указано выше, в отдельных файлах и директивой include в главном файле для загрузки всех из них:
источник