nginx-установить несколько имен серверов с поддержкой ssl
Я хотел бы использовать nginx для обслуживания веб-сайта с несколькими доменными именами и SSL:
- webmail.example.com
- webmail.beispiel.de
оба используют один и тот же vhost, поэтому я устанавливаю имя_сервера только дважды. Проблема в том, что мне нужен nginx для обслуживания правильного SSL-сертификата для каждого доменного имени.
возможно ли это с одним vhost или мне нужно настроить два vhosts?
1 ответов
Редактировать Ноябрь 2014: первоначальный ответ не является правильным и неполным ; он нуждался в обновлении! вот оно.
в основном, в двух случаях
- у вас есть подстановочный сертификат (или многодоменный сертификат)
В этом случае, вы можете использовать несколько виртуальных доменов прослушивание одного и того же IP-адреса/https-порта, и оба виртуальных доменов используйте тот же сертификат (прослушивание на всех интерфейсах), например,
server {
listen 443;
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
server {
listen 443;
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
или в вашем конкретном случае, когда оба домена обслуживаются одними и теми же данными
server {
listen 443;
server_name webmail.example.com webmail.beispiel.de; # <== 2 domains
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
- у вас есть два (+), различные сертификаты
случай выше (один IP для всех сертификатов) по-прежнему будет работать с современными браузерами через указание имени сервера. SNI имеет клиента (браузер) отправить хост, который он хочет достичь в заголовке запроса, что позволяет серверу (nginx) иметь дело с виртуальных доменов перед дело с сертификатом. Конфигурация такая же, как и выше, за исключением того, что каждый vhost имеет специальный сертификат,crt и ключ.
(поддержка nginx SNI от 0.9.8 f, проверьте, что ваш сервер nginx совместим с SNI)
(кроме того, SF говорит о SNI и поддержке браузера)
В противном случае, если вы хотите достичь более старых браузеров, вам нужно несколько виртуальных доменов слушая друг к разные IP-адреса/https-порты, например
server {
listen 1.2.3.4:443; # <== IP 1.2.3.4
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/certifIP1example.crt;
ssl_certificate_key /var/www/ssl/certifIP1example.key;
...
}
server {
listen 101.102.103:443; <== different IP
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/certifIP2beispiel.crt;
ssl_certificate_key /var/www/ssl/certifIP2beispiel.key;
...
}
причина хорошо пояснил, что.