%204.X%20%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
Ngnix をリバース プロキシとして使用して OpenShift (OKD) 4.X にアクセスするにはどうすればよいでしょうか?
リバースプロキシ(Nginx)の設定を何百回も試しましたが、すべてエラーで失敗しました。「アプリケーションは利用できません」アクセスするとoauth-openshift.apps.mbr.some.dmルート。
注記:このルートに直接アクセスする場合(リバース プロキシを使用せずに)は、この問題は発生しません。ルートを解決するために必要な情報が送信されていない可能性があります。
これは私たちが使用している基本的な構成テンプレートです...
server {
access_log /var/log/nginx/apps.mbr.some.dm-access.log;
error_log /var/log/nginx/apps.mbr.some.dm-error.log;
server_name ~^(?<subdomain>.+)\.apps\.mbr\.some\.dm$;
location / {
proxy_pass https://10.2.0.18:443;
proxy_set_header Host $subdomain.apps.mbr.some.dm;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
}
listen 443;
ssl_certificate /etc/letsencrypt/live/apps.mbr.some.dm/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/apps.mbr.some.dm/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
これらのパラメータもテストしましたが、以下に示すようにいくつかの問題が発生しました...
server {
[...]
location / {
[...]
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 on;
proxy_ssl_session_reuse on;
proxy_ssl_verify on;
[...]
}
[...]
}
証明書アプリ.mbr.some.dm.crt、アプリ.mbr.some.dm.key、アプリ.mbr.some.dm.crt.key.pemOpenShift (OKD) がリソース (HTTPS) へのアクセスを許可するために使用する自己署名証明書です。ただし、リバース プロキシ (Nginx) でこれらの証明書を使用しようとすると、次のエラーが発生します (「Bad Gateway」)...
2021/07/22 17:36:11 [error] 6999#6999: *1 upstream SSL certificate verify error: (21:unable to verify the first certificate) while SSL handshaking to upstream, client: 177.25.231.233, server: ~^(?<subdomain>.+)\.apps\.mbr\.brlight\.net$, request: "GET /favicon.ico HTTP/1.1", upstream: "https://10.2.0.18:443/favicon.ico", host: "oauth-openshift.apps.mbr.some.dm", referrer: "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"
注意:私たちはテストしましたアプリ.mbr.some.dm.crtそしてアプリ.mbr.some.dm.crt.key.pem証明書を使用するカールそして両方とも完璧に動作しました。
プラス:リクエストがルートに到着したときに何が問題なのかを診断/観察する方法(ログ)を定義できませんでしたoauth-openshift.apps.mbr.some.dm。これは何が問題なのかを理解するのに役立つと思います。