Рейтинг:0

Как использовать Ngnix в качестве обратного прокси для доступа к OpenShift (OKD) 4.X?

флаг in

Как использовать Ngnix в качестве обратного прокси для доступа к OpenShift (OKD) 4.X?

Я пробовал сотни настроек для обратного прокси-сервера (Nginx), и все они терпят неудачу с ошибкой «Приложение недоступно» когда мы получаем доступ к oauth-openshift.apps.mbr.some.dm маршрут.

ПРИМЕЧАНИЕ: Эта проблема не возникает, если мы обращаемся к этому маршруту напрямую (без использования обратного прокси). Возможно, какая-то информация, необходимая для разрешения маршрута, не отправляется.

Это базовый шаблон конфигурации, который мы используем...

сервер {
    журнал_доступа /var/log/nginx/apps.mbr.some.dm-access.log;
    error_log /var/log/nginx/apps.mbr.some.dm-error.log;
    server_name ~^(?<субдомен>.+)\.apps\.mbr\.some\.dm$;

    место расположения / {
        прокси_пароль https://10.2.0.18:443;
        proxy_set_header Хост $subdomain.apps.mbr.some.dm;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    }

    слушать 443;
    ssl_certificate /etc/letsencrypt/live/apps.mbr.some.dm/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/apps.mbr.some.dm/privkey.pem;
    включить /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Мы также проверили эти параметры и получили некоторые проблемы, как вы можете видеть ниже...

сервер {
    [...]
    место расположения / {
        [...]
        proxy_ssl_certificate /etc/nginx/backend_ss_certs/apps.mbr.some.dm.crt;
        proxy_ssl_certificate_key /etc/nginx/backend_ss_certs/apps.mbr.some.dm.key;
        proxy_ssl_trusted_certificate /etc/nginx/backend_ss_certs/apps.mbr.some.dm.crt.key.pem;
        proxy_ssl_ciphers HIGH:!aNULL:!MD5;
        proxy_ssl_protocols TLSv1.2 TLSv1.3;
        proxy_ssl_server_name включено;
        proxy_ssl_session_reuse включено;
        proxy_ssl_verify включен;
        [...]
    }
    [...]
}

Сертификаты apps.mbr.some.dm.crt, apps.mbr.some.dm.key, apps.mbr.some.dm.crt.key.pem — это самозаверяющие сертификаты, используемые OpenShift (OKD) для разрешения доступа к ресурсам (HTTPS). Однако, если мы попытаемся использовать эти сертификаты с обратным прокси-сервером (Nginx), произойдет следующая ошибка («Плохой шлюз»)...

22/07/2021 17:36:11 [ошибка] 6999#6999: *1 ошибка проверки SSL-сертификата восходящего потока: (21: невозможно проверить первый сертификат) при квитировании SSL к восходящему потоку, клиент: 177.25.231.233, сервер: ~ ^(?<субдомен>.+)\.apps\.mbr\.brlight\.net$, запрос: "GET /favicon.ico HTTP/1.1", восходящий поток: "https://10.2.0.18:443/favicon .ico", хост: "oauth-openshift.apps.mbr.some.dm", реферер: "https://oauth-openshift.apps.mbr.some.dm/oauth/authorize?client_id=console&redirect_uri=https%3A %2F%2Fconsole-openshift-console.apps.mbr.some.dm%2Fauth%2Fcallback&response_type=code&scope=user%3Afull&state=ff6f3064"

ПРИМЕЧАНИЕ: Мы протестировали apps.mbr.some.dm.crt и apps.mbr.some.dm.crt.key.pem сертификаты с использованием завиток и оба работали отлично.


ПЛЮС: Мы не могли определить способ диагностики/наблюдения (журналы) о том, что происходит не так, когда запрос поступает по маршруту. oauth-openshift.apps.mbr.some.dm . Я думаю, это поможет нам понять, что происходит не так.

Michael Hampton avatar
флаг cz
Созданный вами заголовок X-Forwarded-For недействителен.
Eduardo Lucio avatar
флаг in
Я уже пробовал и этот `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;`. Та же проблема...

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

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.