У меня есть один сервер, на котором размещено несколько веб-сайтов;
, чтобы уменьшить проблему, давайте предположим, что их всего два:
http://www.example-A.com
https://www.example-B.com
Сайт A
предлагаеттолько HTTP-соединения, в то время как сайт B
имеет собственный сертификат SSL и предлагает безопасные соединения.
Мой файл конфигурации выглядит следующим образом (соответствующая часть):
http
{
server
{
listen 80;
server_name www.example-A.com;
[...]
}
server
{
listen 80;
server_name www.example-B.com;
return 301 https://www.example-B.com$request_uri;
}
server
{
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/www.exampe-A.com.crt;
ssl_certificate_key /usr/local/nginx/ssl/www.exampe-A.com.key;
ssl_prefer_server_ciphers on;
server_name www.example-B.com;
[...]
}
}
Теперь, если я подключусь к http://www.example-A.com
все работает нормально.
Также подключение к https://www.example-B.com
работает как положено.
Подключение к http://www.example-B.com
приводит к перенаправлению на https://www.example-B.com
Пока все хорошо.
Теперь проблема встает, если я попробую безопасное соединение с A
: https://www.example-A.com
Я бы ожидал, что сервер откажется от соединения.
Вместо этого я получаю браузерпредупреждает, что соединение небезопасно.
Когда я продолжаю, я приземляюсь на домен https://www.example-A.com
, но содержание www.example-B.com
обслуживается.
Если я добавлю в конфигурацию
server
{
listen 443 ssl;
server_name www.example-A.com;
return 444;
}
Затем попытка безопасного подключения к A
завершается неудачно, как и ожидалось.
Bно также не удается подключиться к https://www.example-B.com
.
Чего мне не хватает?Почему директива server_name
не соблюдается?
Как я могу обслуживать A
в HTTP, B
в HTTPS и блокировать неподдерживаемые HTTPS-соединения с A
?
Iя бегу
$ nginx -V
nginx version: nginx/1.12.2
built with OpenSSL 1.1.0d 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local --sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_ssl_module --with-http_stub_status_module --with-pcre=../pcre-8.37 --add-module=../headers-more-nginx-module-0.33