Nginx 기초 편 (4);Nginx 위치 매 칭 규칙 상세 설명

3658 단어 리 눅 스 운영
1. 위치 문법
   저 희 는 먼저 Location 블록 의 역할 을 명 확 히 하 겠 습 니 다. 사용자 가 요청 한 사이트 의 URL 에 따라 일치 하고 특정한 Location 블록 이 성공 하면 Location 블록 에서 정 의 된 일련의 작업 을 수행 합 니 다.
location 문법:
location [ = | ~ | ~* | ^~ ] uri{
...
} 

=: 뒤의 내용 과 정확히 일치 함 을 나타 낸다
^ ~: 최대 접두사 일치
대소 문자 의 일치 구분 에 사용
~ *: 대소 문자 구분 없 이 일치 하 는 데 사용
우선 순위:  =  ... 보다 높다  ^~  ... 보다 높다  ~*  ~ 보다 높다
주:
       (1) 상기 문 자 는 논리 연산 자 와 도 사용 할 수 있 습 니 다!배합 하여 사용 하 다
       (2) 각 location 블록 간 에 순서 관계 가 없고 누가 앞 에 있 으 면 먼저 일치 하 는 것 이 아니다.매 칭 은 우선 순 위 를 참조 하여 매 칭 해 야 합 니 다.
 
생산 환경 에서 자주 사용 되 는 몇 가지 규칙: (1) location = / {\ # 사이트 루트 와 직접 일치 하 며 도 메 인 이름 으로 사이트 홈 페이지 를 방문 하 는 것 이 빈번 합 니 다. 이 를 사용 하면 속도 가 빨 라 집 니 다.}
(2) location ~. * \. (jpg | jpeg | css | js) ${\ # 대소 문자 와 일치 합 니 다. jpg. jpeg. css. js 등 으로 끝 납 니 다. 적어도 한 글자 로 시작 하 는 파일 \ # \. 전의 점 은.. 의 원래 뜻 입 니 다. $는 어떤 고정 으로 끝 납 니까? "." 소수점 은 임의의 문 자 를 대표 합 니 다. "*" 별표 는 여러 개의 임의의 문자 와 일치 합 니 다.}
 
2. 위치 매 칭 실전
        다음은 아래 테스트 를 통 해 서로 다른 location 태그 가 적용 되 는 순 서 를 검증 합 니 다.
1. 설정 파일 을 수정 하 였 습 니 다. echo 명령 테스트 "/" = / test. png "/ test. png" 두 우선 순위, 누가 더 우선 합 니까?location / { echo "haha"; } location /test.png { echo "xixi"; } location = /test.png { echo "heihei"; }
\ # 테스트: [root@jfedu conf]# curl  www.jf1.com    # 일치 하 는 "/" haha [root@jfedu conf]# curl  www.jf1.com/ haha [root@jfedu conf]# curl  www.jf1.com/test.png    # 정확하게 일치 하 는 heihei [root@jfedu conf]# curl www.jf1.com/test     # "/" 와 일치 합 니 다. 일치 하 는 문자 가 일치 하지 않 습 니 다. 기본 값 은 / 기본 값 입 니 다.echo 모듈 이 없 으 면 이 방문 url 은 haha 입 니 다.                                                                    404 오류 가 발생 했 습 니 다. 이 서 류 를 찾 지 못 했 습 니 다.
 
 
2. 설정 파일 을 수정 하 였 습 니 다. echo 명령 테스트 "^ ~ / test /" "^ ~ / test" 두 우선 순위, 누가 더 우선 합 니까?location ^ ~ / test / {echo "jfedu 3";} location ^ ~ / test {echo "jfedu 4";} \ # 테스트 [root@jfeduconf] \ # curl www. jf1. com / test \ # 최대 접두사 일치 test
jfedu4 [root@jfeduconf] \ # curl www. jf1. com / test 666 \ # 최대 접두사 매 칭 test 666 jfedu 4 [root@jfedu conf]# curl www.jf1.com/test666777 jfedu4 [root@jfeduconf] \ # curl www. jf1. com / test / \ # 일치 하 는 디 렉 터 리 jfedu 3
[root@jfeduconf] \ # curl www. jf1. com / test 123 / \ # 최대 접두사 일치 test jfedu 4
\ # 위 에 있 는 이것 은 의문 이 있 을 수 있 습 니 다. 여러분 은 이렇게 생각 할 수 있 습 니 다. 테스트 하 는 것 은 디 렉 터 리 입 니 다. 최대 접 두 사 를 선택 하면 jfedu 3 를 출력 해 야 합 니 다. jfedu 3 를 출력 하 는 것 만 이 디 렉 터 리 와 일치 하기 때 문 입 니 다.
의심: 사실 사용자 의 요 구 는 test 123 디 렉 터 리 를 방문 하 는 것 입 니 다. jfedu 3 를 출력 하기 때문에 최대 접두사 도 test 디 렉 터 리 일 뿐 입 니 다. test 123 과 test 가 완전히 다 르 기 때문에 아래 jfedu 4 라 는 최대 접두사 와 일치 합 니 다. jfedu 4 의 test 뒤 에는 알 수 없 기 때문에 여기까지 파일 일 수도 있 고 뒤에 인 자 를 추가 할 수도 있 습 니 다.또 하나의 슬 래 쉬 디 렉 터 리 를 추가 합 니 다. 말하자면 출력 된 jfedu 3 의 그 location 은 디 렉 터 리 test 123 일 수 없 음 을 확 인 했 습 니 다. 그러나 jfedu 4 를 출력 한 그 location 은 디 렉 터 리 test 123 일 수도 있 습 니 다.그래서 jfedu 4 를 출력 합 니 다.
[root@jfeduconf] \ # curl www. jf1. com / test / 123 \ # 디 렉 터 리 test 에 있 는 파일 jfedu 3 \ # 일치 "^ ~ / test /" ^ ~ / test "," ^ ~ / test / "디 렉 터 리 와 일치 합 니 다." ^ ~ / test "는 파일 이름 접두사 와 일치 합 니 다.
3. 설정 파일 을 수정 하 였 습 니 다. echo 명령 테스트 "~" ~ * "두 우선 순위, 누가 더 우선 합 니까?
location ~ / test {echo "jfedu 5";} location ~ * / test {echo "jfedu 6";} \ # 테스트 [root@jfeduconf] \ # curl www. jf1. com / test \ # 대소 문자 관련 jfedu 5 [root@jfeduconf] \ # curl www. jf1. com / tesT \ # 대소 문 자 는 jfedu 6 \ # 와 무관 합 니 다. "~" ~ * "가 설정 파일 에서 기능 을 수행 하면 일치 순 서 는 설정 에 설 정 된 선착순 으로 일치 합 니 다.

좋은 웹페이지 즐겨찾기