%204.X%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%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;
[...]
}
[...]
}
인증서apps.mbr.some.dm.crt,apps.mbr.some.dm.key,apps.mbr.some.dm.crt.key.pem리소스(HTTPS)에 대한 액세스를 허용하기 위해 OpenShift(OKD)에서 사용되는 자체 서명된 인증서입니다. 그러나 이러한 인증서를 역방향 프록시(Nginx)와 함께 사용하려고 하면 다음 오류가 발생합니다("잘못된 게이트웨이")...
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"
참고:우리는apps.mbr.some.dm.crt그리고apps.mbr.some.dm.crt.key.pem다음을 사용하는 인증서곱슬 곱슬하다둘 다 완벽하게 작동했습니다.
을 더한:요청이 경로에 도착할 때 무엇이 잘못되었는지 진단/관찰(로그)하는 방법을 정의할 수 없습니다.oauth-openshift.apps.mbr.some.dm. 나는 이것이 무엇이 잘못되었는지 알아내는 데 도움이 될 것이라고 생각합니다.