nginx 설정 메모

1377 단어
Nginx 는 모두 가 알 고 있 지만 많은 사람들 이 자주 사용 하 는 location 명령 의 우선 순위 가 어떤 지 알 수 있 습 니 다. 이것 은 아 는 사람 이 많 지 않 을 수도 있 습 니 다. 예전 에 어떤 나라 사람들 이 nginx 의 'bug' () 라 고 말 한 것 을 기억 합 니 다. 바로 location 설정 이 부당 해서 생 긴 것 입 니 다. 이것 은 nginx 의 bug 가 아 닙 니 다.운영 자의 nginx 배치 location 우선 순위 에 대한 이해 가 투철 하지 않 아서 생 긴 것 입 니 다.
nginx 공식 적 으로 location 명령 설명 을 밝 혔 습 니 다.
syntax:  location [ = | ~ | ~* | ^~ ] uri { ... }
location  @name { ... }
default:  —
context:  server, location

먼저 nginx 규칙 처리 요청 은 경로 가 URI 규범화 이후 에 진행 되 는 것 을 이해 합 니 다. 규범화 란 URI 에서 '% XX' 와 같은 인 코딩 문 자 를 먼저 디 코딩 한 다음 에 URI 의 상대 경 로 를 분석 하 는 것 입 니 다. '와'... '부분 은 인접 한 두 개 이상 의 사선 을 압축 하여 하나의 사선 이 될 수도 있 습 니 다.
= 처음에 정확 한 매 칭 을 표시 하고 완전히 일치 해 야 실행 할 수 있 습 니 다.
^~ 시작 은 uri 가 일반적인 문자열 로 시작 하여 url 경로 와 일치 하 는 것 으로 이해 하면 됩 니 다. 최대 접두사 가 일치 하 는 경로 가 "^ ~" 로 시작 하면 nginx 는 정규 표현 식 을 검사 하지 않 습 니 다. nginx 는 url 에 인 코딩 하지 않 기 때문에 / assets / 20% / css. css 로 요청 하면 규칙 ^ ~ / assets / css. css 에 일치 할 수 있 습 니 다 (빈 칸 임 을 주의 하 십시오).
~ 시작 은 대소 문 자 를 구분 하 는 정규 일치 임 을 나타 낸다.
~* 처음에 대소 문 자 를 구분 하지 않 는 정규 와 일치 하고 ~ 와 반대로 대소 문 자 는 동등 하 게 대 하 는 것 을 나타 낸다.
/ 일반적인 일치, 다른 일치 가 없 으 면 모든 요청 이 일치 합 니 다.
우선 순 위 는 기본적으로 이렇게 생각 할 수 있다.
(location =) > (location 전체 경로) > (location ^ ~ 경로) > (location ~ * 정규) > (location 경로) > (/)

좋은 웹페이지 즐겨찾기