Nginx URL 재 작성 규칙 설정 상세 설명

4297 단어
rewrite 모듈 은 nginx 의 재 작성 모듈 을 소개 합 니 다. 간단 한 정규 표현 식 과 가상 중첩 기 를 결합 합 니 다.PCRE 라 이브 러 리 에 의존 하기 때문에 pcre 를 설치 해 야 합 니 다.관련 변수 에 따라 방향 을 바 꾸 고 서로 다른 설정 을 선택 하면 한 location 에서 다른 location 으로 이동 합 니 다. 그러나 이러한 순환 은 최대 10 회 실 행 될 수 있 습 니 다. 후 nginx 를 초과 하면 500 오 류 를 되 돌려 줍 니 다.이 동시에 재 작성 모듈 은 set 명령 을 포함 하여 새로운 변 수 를 만 들 고 그 값 을 설정 합 니 다. 이것 은 일부 상황 에서 매우 유용 합 니 다. 예 를 들 어 조건 표 지 를 기록 하고 파 라 메 터 를 다른 location 에 전달 하 며 무엇 을 했 는 지 기록 하 는 등 입 니 다.
rewrite 모듈 명령 break 문법: break 기본 값: none 사용 필드: server, location, if 역할: 현재 설정 한 재 작성 규칙 을 완성 하고 다른 재 작성 규칙 을 실행 하지 않 습 니 다.
if 문법: if (condition) {...} 기본 값: none 사용 필드: server, location 주의: trp 사용 을 고려 하 십시오.files 대체.
판단 조건 은 다음 과 같은 값 이 있 을 수 있다.
변수의 이름: 빈 문자 전송 '또는' 0 '으로 시작 하 는 문자열 은 false 입 니 다. 문자열 비교: 사용 = 또는! = 연산 자 정규 표현 식 일치: 사용 ~ (대소 문자 구분) 과 ~ (대소 문자 구분 하지 않 음)........................................................................................................................................ 표준 이 아 닌 444 상태 코드 는 연결 을 닫 고 응답 헤드 를 보 내지 않 습 니 다. 사용 가능 한 상태 코드 는 204, 400, 402 - 406, 408, 410, 411, 413, 416 과 500 - 504 입 니 다. 상태 코드 에 텍스트 단락 이 붙 어 있 으 면 응답 주체 에 놓 입 니 다. 반대로 상태 코드 뒤에 URL 이 있 으 면 이 URL 은 location 헤드 값 이 됩 니 다. 상태 코드 가 없 는 URL 은 응답 주체 로 간 주 됩 니 다.302 상태 코드
rewrite 문법: rewrite regex replacement flag 기본 값: none 사용 필드: server, location, if 관련 정규 표현 식 과 문자열 에 따라 URI 를 수정 하고 명령 은 설정 파일 에 나타 나 는 순서에 따라 실 행 됩 니 다. 재 작성 명령 뒤에 표 시 를 추가 할 수 있 습 니 다.
메모: 변 경 된 문자열 이 http: / 로 시작 하면 요청 이 방향 을 바 꾸 고 불필요 한 rewrite 명령 을 실행 하지 않 습 니 다.
끝 에 있 는 태그 (flag) 는 다음 과 같은 값 일 수 있 습 니 다.
last – 재 작성 모듈 명령 을 처리 하지 않 습 니 다. 이후 검색 location 은 변 경 된 URI 와 일치 합 니 다. break – 재 작성 명령 을 완 료 했 습 니 다. redirect – 302 임시 재 설정 을 되 돌려 줍 니 다. 필드 를 http: / / 로 시작 하면 사 용 됩 니 다. permanent – 301 영구 재 설정 을 되 돌려 줍 니 다. rewrite log 문법: rewrite log on | off 기본 값: rewrite log off 사용 필드: server, location,if 변수: 사용 하지 않 을 때 error log 에 notice 단계 의 재 작성 로 그 를 기록 합 니 다.
set 문법: set variable value 기본 값: none 사용 필드: server, location, if 는 주어진 변수 에 특정 값 을 설정 합 니 다.
uninitialized variable warn 문법: uninitialized variable warn on | off 기본 값: uninitialized variable warn on 사용 필드: http, server, location, if 제어 가 초기 화 되 지 않 은 변수의 경고 정 보 를 기록 할 지 여부 입 니 다.
재 작성 규칙 구성 부분 첫 번 째 부분 – 정규 표현 식 은 괄호 로 캡 처 할 수 있 습 니 다. 나중에 위치 에 따라 참조 할 수 있 습 니 다. 위치 변 수 는 정규 표현 식 의 순서 에 달 려 있 습 니 다. $1 은 첫 번 째 괄호 의 값 을 참조 하고 $2 는 두 번 째 괄호 의 값 을 참조 하여 유추 할 수 있 습 니 다. 예 를 들 어:
^/images/([a-z]{2})/([a-z0-9]{5})/(.*).(png|jpg|gif)$
$1 은 두 개의 소문 자로 구 성 된 문자열 입 니 다.
$2 는 소문 자 와 0 에서 9 의 숫자 로 구 성 된 5 글자 의 문자열 입 니 다.
$3 은 파일 이름 입 니 다.
$4 는 png, jpg, gif 중 하나 입 니 다.
두 번 째 부분 – URI 요청 이 변경 되 었 습 니 다. 이 URI 는 정규 표현 식 에서 포 획 된 위치 인자 나 이 단계 의 nginx 설정 변 수 를 포함 할 수 있 습 니 다. 예:
/ data? file = $3. $4 이 URI 가 nginx 설정 의 어떠한 location 와 도 일치 하지 않 는 다 면 클 라 이언 트 에 301 (영구 방향 변경) 또는 302 (임시 방향 변경) 의 상태 코드 를 되 돌려 줍 니 다. 이 상태 코드 는 세 번 째 매개 변 수 를 통 해 명확 하 게 지정 할 수 있 습 니 다.
세 번 째 부분 – 세 번 째 부분 을 표시 하 는 것 은 바로 끝 에 있 는 태그 (flag) 입 니 다. last 표 시 는 재 작성 한 URI 에서 nginx 와 일치 하 는 다른 location 을 검색 합 니 다. 최대 10 회 순환 할 수 있 습 니 다. 예:
rewrite '^ / images / ([a - z] {2}) / ([a - z0 - 9] {5}) / (. *). (png | jpg | gif) $' / data? file = $3. $4 last; break 명령 은 자신의 명령 으로 사용 할 수 있 습 니 다. 예 를 들 어:
if ($bhug) {limit rate 300 k; break;} 인 스 턴 스 http {\ # 정의 이미지 로그 형식 log format imagelog '[$time local]' $image file '' $image type '' $body bytes sent '' $status;
재 작성 로그 열기
rewrite_log on;

server {
    root /home/www;

    location / {
        #       
        error_log logs/rewrite.log notice;  
        #       ‘’      ,  {}
        rewrite '^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$' /data?file=$3.$4;
        #                “last”  ,     set      
        set $image_file $3;
        set $image_type $4;
    }

    location /data {
        #            ,          
        access_log logs/images.log mian;
        root /data/images;
        #          。         ,          ,             url 
        try_files /$arg_file /image404.html;
    }
    location = /image404.html {
        #             
        return 404 "image not found
"; }

}
다음으로 전송:https://blog.51cto.com/14164498/2364479

좋은 웹페이지 즐겨찾기