Задать вопрос
kaliyan
@kaliyan
Oh my God or simple Nik

Как организовать https между 2 серверами с nginx?

Дано
1. сервер внутри локальной сети 192.168.0.10 (ubuntu + nxinx)
2. роутер смотрящий в интернет с белым IP x.x.x.x, с закрытыми 80 и 443 портами, с открытыми и проброшенными к локальному серверу 8080 и 8443 портами
3. арендованный впс с белым IP y.y.y.y (ubuntu + nxing)
4. домен site.ru смотрящий на впс y.y.y.y

Задача
Открывать site.ru с сервера из локальной сети по https.

С HTTP все просто, настроено и работает: На впс поднят проксирующий на другой ip:порт nginx.
server {
    listen       80;
    server_name  site.ru www.site.ru;

    location / {
        proxy_pass  http://x.x.x.x:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real_IP  $remote_addr;
   }
}


Получается локальный сервер знает все о клиенте, а клиент ничего не знает о конечном сервере.

Как это все сделать на HTTPS?

На сколько я понимаю, будут 2 шифрованные ноги
1. клиент -> впс (сертификат letsencrypt)
2. впс -> локальный сервер (нужен само подписанный сертификат?)

Получается клиент шифрует, проксирующий nginx дешифрует, он же шифрует для второй ноги и конечный nginx дешифрует.

Интересует именно вторая нога от проксирующего nginx к конечному nginx. Как настроить между ними безопасное шифрование?

Есть ли другие способы реализации https в такой сетевой архитектуре?
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Средний 8 комментариев
Пригласить эксперта
Ответы на вопрос 1
IvanU7n
@IvanU7n
nothing interesting here
в принципе всё верно, правда что такое "первая нога" и "вторая нога" не сразу понял
для такого варианта какой-то сертификат для конечного nginx нужен, но какой именно неважно, ЕМНИП по умолчанию nginx не проверяет валидность сертификатов при proxy_pass на https

можно ещё посмотреть на модуль stream и proxy-протокол, тогда проксирующий nginx будет тупо перенаправлять трафик и ничего расшифровывать и снова шифровать не будет, терминированием ssl-сессии будет заниматься конечный nginx
у этого способа есть свои недостатки — порты на конечном nginx нужны отдельные чтобы принимать proxy-протокол, проксирующий nginx не будет ничего знать о доменах, т.к. по большому способу будет работать на уровне tcp
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
02 янв. 2025, в 20:05
100000 руб./за проект
02 янв. 2025, в 19:28
1000 руб./за проект
02 янв. 2025, в 16:48
1000 руб./за проект