Nginx 설정 의 if 판단

2446 단어 Server
rewrite 의 재 작성 규칙 이 수 요 를 만족 시 키 지 못 할 때, 예 를 들 어 파일 이 존재 하지 않 을 때, 경로 가 xx 를 포함 할 때 등 조건 을 판단 하려 면 if 를 사용 해 야 합 니 다.
if 문법
if (   ) {
    ...
}

표현 식 문법:
  • 표현 식 이 하나의 변수 일 때 값 이 비어 있 거나 0 으로 시작 하 는 문자열 이 모두 false
  • 로 간 주 됩 니 다.
  • 변수 와 내용 을 직접 비교 할 때 = 또는! =
  • - f 와! -f 파일 존재 여 부 를 판단 하 는 데 사용
  • - d 와! -디 렉 터 리 존재 여 부 를 판단 하 는 데 사용
  • - e 와! -e 파일 이나 디 렉 터 리 가 존재 하 는 지 판단 하 는 데 사용
  • - x 와! -x 파일 의 실행 여 부 를 판단 하 는 데 사용
  • if 의 조건 판단 을 설정 하기 위해 서 는 nginx 에 내 장 된 전역 변 수 를 사용 해 야 합 니 다.
    $args                            , $query_string
    $content_length          Content-length  。
    $content_type            Content-Type  。
    $document_root           root       。
    $host                      ,        。
    $http_user_agent       agent  
    $http_cookie           cookie  
    $limit_rate                     。
    $request_method             ,   GET POST。
    $remote_addr            IP  。
    $remote_port              。
    $remote_user            Auth Basic Module      。
    $request_filename            , root alias   URI    。
    $scheme             HTTP  ( http,https)。
    $server_protocol           ,   HTTP/1.0 HTTP/1.1。
    $server_addr             ,                 。
    $server_name             。
    $server_port                   。
    $request_uri                 URI,      , :”/foo/bar.php?arg=baz”。
    $uri                         URI,$uri      , ”/foo/bar.html”。
    $document_uri        $uri  。

    예 를 들 어 설명 하 다.
    1. 파일 이 존재 하지 않 으 면 400 을 되 돌려 줍 니 다.
    if (!-f $request_filename) {
        return 400;
    }

    2. host 가 jouypub. com 이 아니라면 301 에서 jouypub. com 에서
    if ( $host != 'jouypub.com' ){
        rewrite ^/(.*)$ https://jouypub.com/$1 permanent;
    }

    3. 요청 유형 이 POST 가 아니라면 405 로 되 돌려 줍 니 다.
    if ($request_method = POST) {
        return 405;
    }

    4. 매개 변수 에 a=1 가 있 으 면 301 에서 지정 한 도 메 인 이름 으로
    if ($args ~ a=1) {
        rewrite ^ http://example.com/ permanent;
    }

    5. 특정한 장면 에서 location 규칙 과 결합 하여 사용 할 수 있다. 예 를 들 어:
    #    /test.html  
    location = /test.html {
        #       xiaowu
        set $name xiaowu;
        #        name=xx      
        if ($args ~* name=(\w+?)(&|$)) {
            set $name $1;
        }
        # 301
        rewrite ^ /$name.html permanent;
    }

    / test. html = > / xiaowu. html / test. html? name = ok = > / ok. html? name = ok
     

    좋은 웹페이지 즐겨찾기