nginx location 설정 소결

4292 단어 Nginx
며칠 전에 작업 할 때 nginx location 을 설정 해 야 하 는데 전에 본 지식 이 잘 기억 나 지 않 습 니 다. 특히 여러 location 의 실행 순서 문제 가 있 습 니 다.특별히 이 작은 매듭 을 써 서 관련 지식 을 복습 합 니 다.
 
문법 규칙: location [ = | ~ | ~* | ^~ ] pattern { … }
[= | ~ | ~ * | ^ ~] location modifier 라 고 불 리 며, Nginx 가 그 후의 pattern 과 어떻게 일치 하 는 지, 그리고 이 pattern 의 가장 기본 적 인 속성 (간단 한 문자열 이나 정규 표현 식) 을 정의 합 니 다.
여러 위치 설정 은 일치 하 는 순서대로 다음 과 같이 배열 합 니 다.
       location = /uri = 첫 번 째 는 정확 한 매 칭 을 표시 하고 완전히 일치 해야만 효력 이 발생 합 니 다.
  location ^~ /uri     ^~ 시작 은 uri 가 일반적인 문자열 로 시작 하여 url 경로 와 일치 하 는 것 으로 이해 하면 됩 니 다.nginx 는 url 에 인 코딩 을 하지 않 기 때문에 요청 합 니 다.                                                      / static / 20% / aa 로 규칙 ^ ~ / static / / aa 에 일치 할 수 있 습 니 다 (빈 칸 주의)
  location ~ pattern ~ 초 반 에는 대소 문 자 를 구분 하 는 정규 가 일치 하고 pattern 은 정규 표현 식 이 어야 합 니 다.
  location ~* pattern ~ * 첫머리 는 대소 문 자 를 구분 하지 않 는 정규 일치, pattern 은 정규 표현 식 이 어야 합 니 다.
  location /uri 수정자 가 없 으 면 접두사 가 일치 하지만 정규 가 일치 하면 됩 니 다.
  location / 일반적인 일치, 다른 location 에 일치 하지 않 는 요청 은 / 와 일치 하 며, switch 의 default 에 해당 합 니 다. 
예 를 들 면:
server
{ 
        listen  8081;
        server_name     localhost;

        location = / {
           #  A  =         
           return 601;
        }

        location = /login {
           #  B
           return 602;
        }

        location ^~ /static/ {
           #  C  ^~     uri          ,      url    
           return 603;
        }

        location ~ \.(jpg|png|php|py)$ {
           #  D  ~              (  :~          )
           return 604;
        }

        location ~* \.png$ {
           #  E  ~*               
           return 605;
        }

        location / {
           #  F      ,        location         /,   switch  default
           return 666;
        }
}

루트 디 렉 터 리 에 접근 / (앞의 =, 규칙 F 와 구별), 예 를 들 어http://localhost:8081/ 일치 하 는 규칙 A 접근http://localhost:8081/login 일치 하 는 규칙 B 를,http://localhost/register 규칙 F 와 일치 합 니 다 (다른 location 에 일치 하지 않 는 요청 은 F 와 일치 합 니 다)방문 하 다.http://localhost:8081/static/a.html 일치 하 는 규칙 C 접근http://localhost:8081/a.php, http://localhost/b.png 규칙 D 와 규칙 E 가 일치 하지만 규칙 D 순서 가 우선 이 고 규칙 E 가 작 동 하지 않 습 니 다.http://localhost:8081/static/c.png 규칙 C 접근 에 우선 일치 합 니 다.http://localhost:8081/a.PNG 규칙 E 는 대소 문 자 를 구분 하지 않 기 때문에 규칙 D 와 일치 하지 않 습 니 다.방문 하 다.http://localhost:8081/category/id/1111 이 규칙 이 일치 하지 않 기 때문에 최종 적 으로 규칙 F 에 일치 합 니 다.
실제 사용 중, 일반적으로 적어도 세 개의 일치 규칙 정의 가 있 습 니 다. 다음 과 같 습 니 다.
\ # 사이트 루트 와 직접 일치 합 니 다. 도 메 인 이름 으로 사이트 홈 페이지 를 방문 하 는 것 이 빈번 합 니 다. 이 를 사용 하면 처리 가 빨 라 집 니 다. 홈 페이지 는 다음 과 같 습 니 다. \ #백 엔 드 애플 리 케 이 션 서버 에 직접 전송 되 었 습 니 다. 정적 홈 페이지 일 수도 있 습 니 다. \ # 첫 번 째 필수 규칙 location = / {    proxy_pass http://localhost:8081/index }   # 두 번 째 필수 규칙 은 정적 파일 요청 을 처리 하 는 것 입 니 다. 이것 은 nginx 가 http 서버 의 강점 입 니 다. \ # 두 가지 설정 모드 가 있 습 니 다. 디 렉 터 리 가 일치 하거나 접미사 가 일치 합 니 다. 하 나 를 선택 하거나 조합 하여 location ^ ~ / static / {를 사용 합 니 다.    root /webroot/static/; } location ~* \.(gif|jpg|png|css|js)$ {     루트 / webroot / res /;} \ # 세 번 째 규칙 은 일반적인 규칙 입 니 다. 백 엔 드 응용 서버 에 동적 요청 을 전달 하 는 데 사 용 됩 니 다. \ # 비정 상 파일 요청 은 기본적으로 동적 요청 입 니 다. 실제 파악 에 따라 \ # 현재 프레임 워 크 의 유행,. php 접 두 사 를 가 진 경 우 는 location / {가 적 습 니 다.    proxy_pass http://localhost:8081/ }
nginx 의 rewrite 문법 소개:
server 블록 에서 rewrite 부분 을 우선 실행 한 다음 에 location 블록 과 일치 합 니 다.
location 의 rewrite, last 를 쓰 지 않 습 니 다 (last 를 사용 하면 server 태그 에 다시 요청 합 니 다) 와 break (break 문 구 를 사용 하여 rewrite 검 사 를 중단 합 니 다. ),그럼 절 차 는 이 rewrite 를 순서대로 수행 하 는 것 입 니 다.
location 에서 rewrite 후 정적 자원 에 대한 요청 이 라면 다른 일치 가 필요 하지 않 습 니 다. 일반적으로 break 를 사용 하거나 쓰 지 않 고 현재 location 의 데이터 원본 을 직접 사용 하여 이번 요청 을 완성 합 니 다.  만약 location 에서 rewrite 를 한 후에 동적 fastcgi 요청 (. php) 과 같은 다른 처리 가 필요 하 다 면  .jsp) 등, last 로 새로운 요청 을 계속 해 야 합 니 다. 
1. rewrite break
url 재 작성 후 현재 자원 을 직접 사용 하여 location 에 남 은 문 구 를 실행 하지 않 고 이번 요청 을 완료 합 니 다. 주소 표시 줄 url 은 변 하지 않 습 니 다. 
2. rewrite last
url 재 작성 후 즉시 새로운 요청 을 시작 하여 server 블록 에 다시 들 어 갑 니 다. location 매 칭 을 다시 시도 합 니 다. 10 회 이상 일치 하지 않 으 면 500 오 류 를 보고 하지 못 합 니 다. 주소 표시 줄 url 은 변 하지 않 습 니 다. 
3. rewrite redirect
302 임시 방향 을 되 돌려 줍 니 다. 주소 표시 줄 은 방향 을 바 꾼 url 을 표시 합 니 다.
4. rewrite permanent
301 영구적 으로 방향 을 바 꾸 고 주소 표시 줄 은 방향 을 바 꾼 url 을 표시 합 니 다.

좋은 웹페이지 즐겨찾기