Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Как реализовать схему nginx-nginx ssl?

На фронтенде nginx, на бакэнде nginx с сертификатами.
Как мне пробросить запросы на бакэнд? или надо пробросить сертификаты на фронтенд?
Сейчас напрямую форвардятся все запросы к 443 на бакэнд через iptables, но реальный ip адрес не передается, а надо.
Через iptables этого не сделать, надо как-то через nginx.


Ответ

Через iptables этого не сделать (ссылка)
по ссылке описана несколько иная сетевая схема: два сервера, подключенные к интернету независимо друг от друга.
в вашем же случае (когда у второй машины шлюзом по умолчанию указана первая) это вполне реализуемо: Проброс реального ip-адреса в виртуальную машину за nat но более гибким решением, по-моему, будет обработка ssl на первой из машин («шлюзе»). тогда из поступающих https-запросов можно будет узнать целевое доменное имя и проксировать уже http- (не https-) пакеты на нужные http-серверы внутри вашей сети. а на этих серверах уже можно принимать и обрабатывать http- (не https-) трафик.
для того же, чтобы дать понять этим серверам, что https таки используется, можно устанавливать де-факто стандартный заголовок x-forwarder-proto, и эти серверы затем смогут сообщить сайтам об этом факте (например, некоторые cms имеют привычку делать редирект на https, если «обнаруживают», что используется http, например, для авторизации пользователей).
как этот заголовок обработать в apache, написано, например, здесь
ServerName ... ... SetEnvIf X-Forwarded-Proto https HTTPS=on ...
как этот заголовок обработать в nginx, написано, например, здесь
server { ... set_scheme_from ip-адрес-шлюза; real_scheme_header X-Forwarded-Proto; ... }

Комментариев нет:

Отправить комментарий