Nginx 에서 if 다 중 판단 쓰기 실현

1568 단어
nginx 를 사용 하 는 친구 들 은 nginx 의 if 문법 이 비교적 엄격 하 다 는 것 을 알 고 있 을 것 입 니 다. 그리고 아직 and & | 이런 표기 법 이 없습니다. 만약 에 여러 가지 판단 을 하고 싶다 면 우 리 는 다른 방법 을 생각 할 수 밖 에 없습니다. 다음은 투기 거래 를 통 해 다른 방법 으로 다 중 판단 을 실현 하 는 방법 을 소개 하 겠 습 니 다. 방법 은 알 아야 할 친 구 를 참고 할 수 있 습 니 다.
if ($request_uri ~ "xxx.php?xxx") {
set $iftmp Y;
}
if ($http_user_agent ~ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)") {
set $iftmp "${iftmp}Y";
}
if ($iftmp = YY) { return 400;}
location / {
proxy_pass https://172.0.0.11;
}

중점 1 set $iftmp Y 는 iftmp 를 Y 로 설정 합 니 다. set 명령 은 큰 하 이 라이트 입 니 다.
중요 한 것 은 set 부분 set $iftmp "${iftmp} Y" 가 set 에 있 습 니 다. ${iftmp} Y 는 매개 변 수 를 한 번 중첩 합 니 다. ${iftmp} 은 큰 하 이 라이트 입 니 다.
$request_uri 는 클 라 이언 트 가 요청 한 전체 요청 경로 입 니 다. $httpuser_에이전트 는 사용자 측 에서 요청 한 브 라 우 저 매개 변수 입 니 다. 위의 if 판단 은 간단 한 cc * * 의 원형 입 니 다. 일반적인 cc * * * 는 * * 페이지 를 고정 시 킨 다음 에 브 라 우 저 매개 변수 도 대부분 변 하지 않 습 니 다. 현재 두 개의 if 매개 변수 가 동시에 만족 한 후에 세 번 째 if 는 요청 단 에 400 오 류 를 직접 되 돌려 줍 니 다. 이렇게 하면 간단 한 여과 cc * * * 정상 페이지 로 요청 합 니 다.위의 사례 에 따라 조롱박 을 그 려 다른 응용 을 할 수 있다.
만약 에 우리 가 / admin / 경 로 를 rewrite 해 야 한다 고 가정 하지만 동시에 / admin / p 를 제거 해 야 합 니 다.w_picpaths / 경 로 는 이 경로 에 대해 rewrite 를 하지 않 습 니 다. 아래 의 해결 방법 을 사용 할 수 있 습 니 다.
set $doRewrite "0";
if ($request_uri ~ ^/admin/) {
set $doRewrite "1";
}
if ($request_uri ~ ^/admin/p_w_picpaths/) {
set $doRewrite "0";
}
if ($doRewrite = "1") {
// do rewrite
}

다음으로 전송:https://blog.51cto.com/chenwenming/1390042

좋은 웹페이지 즐겨찾기