nginx 정규 규칙

5120 단어 Linux
문법 규칙: location [= | ~ | ~ * | ^ ~] / uri / {...}
패턴
속뜻
location = /uri
= 정확하게 일치 함 을 나타 내 며, 완전히 일치 해야만 유효 함
location ^~ /uri
^ ~ 처음 URL 경 로 를 접두사 로 일치 시 키 고 정규 전에.
location ~ pattern
첫머리 는 대소 문 자 를 구분 하 는 정규 일치 를 나타 낸다
location ~* pattern
대소 문 자 를 구분 하지 않 는 정규 일치
location /uri
수정자 가 없 으 면 접두사 가 일치 하지만 정규 가 일치 하면
location /
일반적인 일치, 다른 location 에 일치 하지 않 는 모든 요청 이 일치 합 니 다.
여러 location 설정 의 경우 일치 하 는 순 서 는 (참고 자료 에서 왔 습 니 다. 아직 실제 검증 되 지 않 았 습 니 다. 해 보면 알 수 있 습 니 다. 구 애 받 지 않 고 참고 만 하 십시오) 입 니 다.
우선 정확하게 일치 합 니 다.  =
다음 접두사 일치  ^~
그 다음은 파일 의 순서 에 따라 정규 일치 그리고 아무런 수식 이 없 는 접두사 와 일치 합 니 다.
마지막 으로 맡 기 겠 습 니 다.  /  공통 일치 매 칭 성공 시 매 칭 을 중단 하고 현재 매 칭 규칙 에 따라 요청 을 처리 합 니 다 메모: 접두사 가 일치 합 니 다. 관 계 를 포함 할 때 최대 일치 원칙 에 따라 일치 합 니 다.예 를 들 어 접두사 일치: location /dir01 요청 이 있 으 면  location /dir01/dir02  최종 일치  http://localhost/dir01/dir02/file location /dir01/dir02
location = / {
   echo "  A";
}
location = /login {
   echo "  B";
}
location ^~ /static/ {
   echo "  C";
}
location ^~ /static/files {
    echo "  X";
}
location ~ \.(gif|jpg|png|js|css)$ {
   echo "  D";
}
location ~* \.png$ {
   echo "  E";
}
location /img {
    echo "  Y";
}
location / {
   echo "  F";
}

그러면 발생 하 는 효 과 는 다음 과 같다.
루트 디 렉 터 리 에 접근 
, 예 를 들 면  /  일치  http://localhost/
방문 하 다.  A  일치  http://localhost/login B  일치 하 다  http://localhost/register
방문 하 다.  F  일치  http://localhost/static/a.html
방문 하 다.  C  일치  http://localhost/static/files/a.exe, 비록  X  일치 할 수도 있 지만 최대 일치 원칙 으로 최종 선택 되 었 습 니 다.  C 。규칙 X 를 제거 하면 현재 URL 이 일치 하 는 지 테스트 할 수 있 습 니 다.  X
방문 하 다.  Chttp://localhost/a.gif  일치  http://localhost/b.jpg  화해시키다  D  ,그러나.  E  순서 우선, D 소 용이 없다  E  우선 순위  http://localhost/static/c.png
방문 하 다.  C  일치 하 다  http://localhost/a.PNG  ,일치 하지 않 습 니 다.  E  ,... 때문에  D  대소 문 자 를 구분 하지 않다.
방문 하 다.  E  일치 합 니 다.  http://localhost/img/a.gif, 비록  D  일치 할 수도 있 지만 정규 일치 가 우선 이기 때문에 무시 합 니 다.  Y
방문 하 다.  Y  일치 합 니 다.  http://localhost/img/a.tiff
방문 하 다.  Y  규칙 F 에 최종 적 으로 일치 합 니 다. 상기 규칙 이 일치 하지 않 기 때문에 이 때 는 Nginx 리 트 윗 요청 이 백 엔 드 응용 서버 에 있어 야 합 니 다. 예 를 들 어 FastCGI (phop), tomcat (jsp), Nginx 는 리 버스 프 록 시 서버 로 존재 합 니 다.
#        ,              ,         ,     。
#                 ,          
#        
location = / {
    proxy_pass http://tomcat:8080/index
}

#                 ,   nginx    http       
#        ,         ,         
location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}

#            ,                
#                ,        
#             , .php、.jsp        
location / {
    proxy_pass http://tomcat:8080/
}

좋은 웹페이지 즐겨찾기