nginx 실행 요청 작업 원리 의 location 일치 상세 설명

2439 단어 nginx
PHPer 로 서 nginx 를 설정 하 는 것 은 우리 가 반드시 할 수 있 는 기능 항목 중의 하나 입 니 다.그러나 사용자 가 nginx 에 도착 하 기 를 요청 하면 해당 하 는 설정 항목 과 어떻게 일치 합 니까?
위치 문법 규칙
우선, 우 리 는 먼저 location 의 문법 규칙 을 이해 하고 location 문법 규칙 은 크게 두 가지 로 나 눌 수 있다.
하 나 는 지정 한 URL 주소 입 니 다.
location [ = | ~ | ~* | ^~ ] uri {
    ... 
}

다른 종 류 는 사용자 정의 이름 을 지정 합 니 다.
location @name { 
    ... 
}
@name 는 location 설정 에 대한 사용자 정의 이름 으로 @ + 로 구성 되 어 있 으 며, 일반적으로 try 에 사 용 됩 니 다.files 뒤의 내부 요청, 사용자 정의 이름 location 에 사용자 정의 이름 location 를 삽입 할 수 없습니다.
예:
location @xuzheng{
    ...
}

위치 수정자 의미
앞에서 언급 한 location 문법 규칙 중 하 나 는 URL 주 소 를 지정 하 는 것 이 고 그 중에서 일부 수식 자 를 사 용 했 습 니 다. 다음은 이러한 수식 자의 의 미 를 살 펴 보 겠 습 니 다.
1. = 는 정확 한 매 칭 을 나타 낸다.요청 한 url 경로 가 뒤의 문자열 과 완전히 같 을 때 만 명중 합 니 다.
예:
location = / {
    ...
}

2. ~ 이 규칙 은 정규 정 의 를 사용 하여 대소 문 자 를 구분 하 는 것 임 을 나타 낸다.
예:
location ~ \.php$ {
    ...
}

3. ~* 이 규칙 은 정규 정 의 를 사용 하고 대소 문 자 를 구분 하지 않 는 다 는 것 을 나타 낸다.
예:
location ~* \.php$ {
    ...
}

4. ^~ 은 접두사 가 일치 하 는 것 입 니 다. 그러나 이 기호 뒤의 문자 가 일치 하면 기본적으로 가장 좋 은 일치 입 니 다. 즉, 이 규칙 을 사용 하여 후속 검색 을 하지 않 습 니 다.
예:
location ^~ /blogs {
    ...
}

위치 일치 우선 순위
마지막 으로, 우 리 는 location 의 검색 규칙 을 알 아 보 겠 습 니 다.아래 열 거 된 location 에서 찾 습 니 다. 위 에서 아래로 우선 순 위 는 높 은 것 에서 낮은 것 입 니 다.
1. 등호 유형, 2, ^~ 유형 과 정확하게 일치 하고 접두사 가 일치 하 며 정규 가 지원 되 지 않 습 니 다. 이 기호 뒤의 문자 가 일치 하면 기본 값 으로 가장 좋 은 일치 입 니 다. 3, ~~* 유형 을 계속 찾 지 않 고 정규 일치 합 니 다. ~ 대소 문 자 를 구분 합 니 다. ~* 대소 문자 4, 접두사 일치 유형 을 구분 하지 않 습 니 다. 예 를 들 어 location / {}(/ 로 시작 하 는 모든 URL 이 일치 함 을 표시 합 니 다) 또는 location / user {}. 적당 한 것 을 찾 았 을 뿐 최 장 일치 주 를 찾 을 때 까지 계속 찾 습 니 다. 정규 일치 하 는 규칙 을 사용 할 때 순서 가 중요 합 니 다. location 은 첫 번 째 조건 에 맞 는 설정 규칙 을 찾 으 면 검색 을 중단 합 니 다. 아래 에 더 일치 하 는 설정 이 있 더 라 도.
총결산
위치 매 칭 과정:
1. 우선 접두사 일치 (즉 문자열 일치) 로 정 의 된 location 를 확인 하고 가장 긴 일치 하 는 항목 을 선택 하여 기록 합 니 다.접두사 가 일치 하면 찾기 를 중단 하고 정 의 된 설정 을 사용 합 니 다. 적당 한 테 이 프 를 찾 지 못 하면 =기호의 접두사 가 일치 하면 4 를 계속 찾 습 니 다. 정규 정 의 를 사용 한 location 을 찾 으 면 찾 지 않 고 정 의 된 설정 을 사용 합 니 다. 적당 한 정규 매 칭 을 찾 지 못 하면 5 를 계속 찾 습 니 다. 앞 에 기 록 된 최 장 일치 접두사 문자 location 을 사용 합 니 다.

좋은 웹페이지 즐겨찾기