해결: Nginx 는 if else 와 유사 한 검 측 을 어떻게 실현 합 니까?
프롤로그: 프로젝트 에 사용 되 는 Gateway 는 OAuth Notification 을 처리 할 때 certificate verification 을 설 치 했 습 니 다. 거위 구조 자 는 이것 이 internal url handling 이 라 고 생각 하고 설정 할 필요 가 없습니다.
"x509: certificate signed by unknown authority"
그래서 report ticket 과 함께 일시적인 해결 방안 을 만 들 었 습 니 다. - > OAuth Notification URL 을 Public access URL 로 보 냅 니 다.그러나 이 는 위험 을 드 러 내기 쉬 워 서 만약 에 여러분 이 마음대로 request 를 보 내 면 무 너 지지 않 습 니까?그래서 Nginx 층 에 서 는 location uri + header (shared secret) 를 검사 해 야 합 니 다. 없 으 면 403 으로 돌아 갑 니 다.
문제: 상기 double check 을 시도 할 때 간단 한 if else 의 논리 라 고 생각 했 는데 거위 Nginx 는 다 중 판단 을 지원 하지 않 습 니 다.
해결: 여러 if 와 flag 로 곡선 구국
## Only uri /oauth/notify with correct shared secret is allowed
set $flag 0;
if ( $request_uri ~* "/oauth/notify" ) {
set $flag "${flag}1";
}
if ( $http_x_shared_secret !~ "shared_secret" ) {
set $flag "${flag}1";
}
if ( $flag = "011" ) {
return 403;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.