@DennyD314

Как в Nginx из переменной получить имя сервера из секции upstream?

Всем привет!
Есть проект, развернутый на двух кластерах OpenShift.
Настраиваю балансировщик Nginx между кластерами.
Маршруты Openshift работают в режиме Passthrought терминации SSL.
Для того, чтобы сервис нормально открывался в proxy_ssl_name NGINX должен передаваться hostname.

Пробую примерно такую конфигурацию NGINX:

upstream backend {
    server.com.one
    server.com.two max_fails ...
}

server {
    ...
    proxy_ssl_name $proxy_host;
    proxy_set_header Host $proxy_host;
    proxy_pass https://backend;
}


Проблема в том, что в переменной $proxy_host передается backend, а не server.com.one, которые нужны.

Можно ли в какой нибудь переменной получить нужное значение?
Или в proxy_ssl_name передать несколько значений?
Или возможно, есть какое-либо принципиально другое решение в рамках данных технологий?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Можно для каждого апстрима добавить промежуточный серверный блок и проксировать через него.
Примерно так:
upstream backend {
    127.127.0.1:2000;
    127.127.0.2:2000 max_fails ...;
}

server {
    proxy_pass https://backend;
}

server {
    listen 127.127.0.1:2000;
    location / {
        proxy_pass https://server.com.one;
    }
}

server {
    listen 127.127.0.2:2000;
    location / {
        proxy_pass https://server.com.two;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
$host не подойдет ?
Ответ написан
Ваш ответ на вопрос

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

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