Как настроить NginX: один домен с SSL, другой без - PullRequest
0 голосов
/ 16 октября 2018

У меня есть 2 домена на одном хосте, использующих NginX:

  1. Полный сервер с SSL (серверная часть Python) на 80 и 443 порта.

  2. Просто перенаправить на другой домен, без SSL.

Они описаны в server разделах различных .conf файлов:

1.

server {
    listen 80;
    listen 443 ssl;
    server_name  verni-verni.ru www.verni-verni.ru;

    # Certificates
    ssl_certificate /var/www/SSL/ca.crt;
    ssl_certificate_key /var/www/SSL/private.key;

    # Logs
    ...

    # Static Content
    ...

    # Reverse Proxy
    location / {
        ...
    }
}

2.

server {
    listen 80;
#    listen 443;
    server_name  gdeclient.ru;

    rewrite ^/(.*)$ http://... redirect;
}

Если я установлю только 80 портов для второго домена, то он не будет перенаправлять HTTPS-соединения.

Но если я настрою 443 порттакже (без SSL) для второго домена, чем порт 443 не работает для первого домена, я получаю следующую ошибку :

никакой "ssl_certificate" не определенв сервере, прослушивающем SSL-порт при SSL-квитировании

Вопросы:

  1. Почему второй сервер перенаправления влияет на первый, если у них разные доменные имена???

  2. Возможно ли настроить перенаправление HTTPS для второго сервера без использования SSL и без влиянияg первый сервер?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Почему второй сервер перенаправления влияет на первый, если у них разные доменные имена ???

Поскольку SSL-рукопожатие и соединение устанавливаются до того, как браузер отправляет HTTP-запрос иnginx не знает имя запрошенного сервера.В вашем случае запрос переходит к блоку сервера по умолчанию (2-й блок сервера) для всех запросов порта 443, не может найти конфигурацию ssl_certificate и жалуется.

Если вы сделаете объявления ssl_certificate глобальными, то они будут перенаправлены правильно на первый блок сервера.

0 голосов
/ 16 октября 2018

В ответ на ваши вопросы:

  1. Nginx принимает соединение через порт 443 и затем должен решить, какой сервер использовать для его обработки.См. , как Nginx обрабатывает запрос и Индикация имени сервера .

  2. Если у вас нет сертификата для второго домена, вы не сможете принимать HTTPS-соединения для этого домена, если браузер не пожалуется на сертификат - даже если вы хотите перенаправить его тольков другом месте.

Если вы хотите только предотвратить неправильную обработку подключений HTTPS ко второму домену первым, просто добавьте listen 443 ssl; ко второму домену и либо сделайте ssl_certificate операторы глобальные, или повторите их во втором server блоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...