Kenya-West
@Kenya-West
Обычный Кеня

Как редиректнуть HTTPS на другой айпишник?

Ситуация

Есть сервер A (77.77.77.77), на который смотрит A-запись домена foo.bar. Входящий трафик с домена на этот айпишник с портами 80 (HTTP) и 443 (HTTPS) маршрутизирует NGINX в докере и раскидывает запросы "кому надо". В этом же docker compose есть certbot, который делает какую-то магию, а именно - обновляет SSL-сертификаты к домену.

Есть сервер B (88.88.88.88), которому надо прикрутить этот же домен. Наружу торчит несколько нетипичных портов на манер 5555, 7688, 14888 и т. д.

Проблема

Как сделать так, что при обращении по HTTPS к пути foo.bar/service/name1/dashboard тот самый NGINX маршрутизировал HTTPS-трафик на сервер 2 с IP 88.88.88.88:55555, при обращении на foo.bar/service/name1/config - на 88.88.88.88:14888 и т. д.?

Корень проблемы

Это можно сделать записью в nginx.conf примерно так:
location /service/name1/dashboard {
                proxy_pass https://88.88.88.88:55555/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

                # the headers you had before
                add_header X-XSS-Protection "1; mode=block" always;
                add_header X-Content-Type-Options "nosniff" always;
                add_header Referrer-Policy "no-referrer-when-downgrade" always;
                add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
                #add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        }


Только вот беда: смотрите на строчку
proxy_pass https://88.88.88.88:55555/
- получается, на том конце, в сервере 2 с IP 88.88.88.88, тоже должен стоять сертификат с тем же доменом, да? А как это сделать? Ведь certbot вешает сертификат лишь на один IP и только на порт 443, верно?

Как решить эту проблему?
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Drno
Тебе ненадо слать https.. ты можешь редиректить на http, а ssl (первичный) сделает nginx с твоим цертбот

Либо тебе надо на удаленный сервер скопировать и подставить сертификаты тоже
Ответ написан
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
получается, на том конце, в сервере 2 с IP 88.88.88.88, тоже должен стоять сертификат с тем же доменом, да?

Нет, это не обязательно. Nginx'у всё равно, что за сертификат в proxy_pass - он может быть просроченный, самоподписанный и т. д.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы