Nginx 의 일치 규칙 어댑터

4858 단어 Lnmp
Nginx 경로 일치 기호:
=     맞다
^~   url 은 일반적인 문자열 로 시작 합 니 다. 대부분의 경우 url 경로 와 일치 합 니 다. nginx 는 인 코딩 을 요청 하지 않 기 때문에 / static / 20% / aa 로 요청 합 니 다. 규칙 ^ ~ / static / / aa 에 일치 할 수 있 습 니 다 (빈 칸 주의)
~     대소 문자 구분
~*    대소 문자 구분 없 이 정규 일치
!~    대소 문자 구분 이 일치 하지 않 음 을 나타 내 는 정규
!~*   대소 문자 구분 없 이 일치 하지 않 는 정규
/       모든 요청 이 일치 합 니 다.
일치 우선 순위
    =,     ^~ ,               ,      /     。        ,    ,           。

예:
location = / {  
   #  A  
}  
location = /login {  
   #  B  
}  
location ^~ /static/ {  
   #  C  
}  
location ~ \.(gif|jpg|png|js|css)$ {  
   #  D  
}  
location ~* \.png$ {  
   #  E  
}  
location !~ \.xhtml$ {  
   #  F  
}  
location !~* \.xhtml$ {  
   #  G  
}  
location / {  
   #  H  
}  

루트 디 렉 터 리 /, 예 를 들 어http://localhost/ 일치 하 는 규칙 A
방문 하 다.http://localhost/login 일치 하 는 규칙 B 를,http://localhost/register 일치 하 는 규칙 H
방문 하 다.http://localhost/static/a.html 일치 하 는 규칙 C
방문 하 다.http://localhost/a.gif, http://localhost/b.jpg 일치 하 는 규칙 D, 규칙 E 는 작 동 하지 않 습 니 다.http://localhost/static/c.png 규칙 C 에 우선 일치
방문 하 다.http://localhost/a.PNG 규칙 E 는 대소 문 자 를 구분 하지 않 기 때문에 규칙 D 와 일치 하지 않 습 니 다.
방문 하 다.http://localhost/a.xhtml 규칙 F 와 규칙 G 가 일치 하지 않 습 니 다.http://localhost/a.XHTML대소 문 자 를 구분 하지 않 기 때문에 규칙 G 와 일치 하지 않 습 니 다.규칙 F, 규칙 G 는 배제 법 에 속 하고 일치 하 는 규칙 에 부합 되 지만 일치 하지 않 기 때문에 실제 응용 에서 어디 에 사용 되 는 지 생각해 보 세 요.
방문 하 다.http://localhost/category/id/1111 마지막 으로 규칙 H 에 일치 합 니 다. 상기 규칙 이 일치 하지 않 기 때문에 이 때 는 nginx 리 트 윗 요청 이 백 엔 드 응용 서버 에 있어 야 합 니 다. 예 를 들 어 FastCGI (phop), tomcat (jsp), nginx 는 방향 프 록 시 서버 로 존재 합 니 다.
단순 공통 설정
정적 동적 분리, 정적 자원 을 제외 한 요청 은 모두 Tomcat 에 맡 깁 니 다.
예시 1:
location / {  
    proxy_pass http://localhost:8080
}  

location ^~ /static/ {  
    root /webroot/static/;  
}  

location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  
    root /webroot/res/;  
}  

예시 2:
location ~* .(gif|jpg|jpeg)$ {
    rewrite .(gif|jpg|jpeg)$ /logo.png;
}
#           gif,jpg,jpeg     ,        /logo.png 

예시 3:
location ~^.+\.txt$ {
    root /usr/local/nginx/html;
}

대소 문자 가. txt 로 끝 나 는 요청 과 일치 하 는 지 구분 하고 이 location 의 경 로 를 / usr / local / nginx / html / 로 설정 합 니 다. 즉,. txt 몇 명의 요청 으로 / usr / local / nginx / html / 경로 의 txt 파일 에 접근 합 니 다.
이 알 리 스 와 루트 의 차이
루트 실제 접근 경 로 는 url 의 경 로 를 연결 합 니 다.
alias 실제 접근 경 로 는 url 의 경 로 를 연결 하지 않 습 니 다.
예시
location ^~ /meradmin/ {
  alias /usr/loca/nginx/sitewww/;
}

요청:http://meradmin.langwenke.com/meradmin/index.html
실제 접근: / usr / local / nginx / siteww / index. html
location ^~ /meradmin/ {
  root /usr/loca/nginx/sitewww/;
}

요청:http://meradmin.langwenke.com/meradmin/index.html
실제 접근: / usr / local / nginx / siteww / meradmin / index. html
nginx 에서 파일 형식 에 따라 다운로드 설정
      location ~* .*.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|csv) {
            add_header  Content-Type    "application/octet-stream";
            if ( $args ~ ^filename=(.*) ) {
                add_header  Content-Disposition "attachment; filename=$1";
            }
            root     ;
        }
location ~* (\.txt)$ {
    location ~ robots\.txt$ {
    allow all;
    }
deny all;
}

3 last 와 break 키워드 의 차이
1. last 와 break 가 location 밖 에 나 타 났 을 때 이들 의 역할 은 일치 하고 차이 가 없다.
2. last 와 break 가 내부 에 나타 날 때:
last: last 명령 을 사 용 했 습 니 다. rewrite 후 location 역할 영역 에서 벗 어 나 방금 한 행동 을 다시 시작 합 니 다.
break: break 명령 을 사 용 했 습 니 다. rewrite 후 location 역할 영역 에서 벗 어 나 지 않 고 생명 도 이 location 에서 끝 납 니 다.
4 permanent 와 redirect 키워드 의 차이
rewrite... permanent 영구적 으로 방향 을 바 꾸 고 로그 의 상 태 를 요청 합 니까? 301 입 니 다.
rewrite.....................................................................
다섯, 종합 예시
예 를 들 어 "/ test / (\ d +) / [\ w - \.] +" 라 는 정규 표현 식 에 맞 는 URL 을 고정 페이지 로 바 꿔 야 합 니 다.이 정규 표현 식 에 맞 는 페이지 는 다음 과 같 습 니 다.http://test.com/test/12345/abc122.html、http://test.com/test/456/11111cccc.js기다리다
위의 소 개 를 통 해 알 수 있 듯 이 여 기 는 rewrite 의 방향 을 바 꾸 거나 alias 키 워드 를 사용 하여 우리 의 목적 을 달성 할 수 있 습 니 다.그래서 여 기 는 이렇게 할 수 있다.
(1) rewrite 키 워드 를 사용 합 니 다:
location ~ ^.+\.txt$ {
    root /usr/local/nginx/html/;
}


location ~* ^/test/(\d+)/[\w-\.]+$ {
    rewrite ^/test/(\d+)/[\w-\.]+$ /testpage.txt last;
}

조건 에 맞 는 URL (PS: 대소 문 자 를 구분 하지 않 음) 을 / testpage. txt 요청, 즉 / usr / local / nginx / html / testpage. txt 파일 로 변경 합 니 다.
2. alias 키 워드 를 사용
location ~* ^/test/(\d+)/[\w-\.]+$ {
    alias /usr/local/nginx/html/static/sta1.html;
}

조건 에 맞 는 URL (PS: 대소 문자 구분 없 음) 을 / usr / local / nginx / html / static / sta1. html 파일 로 재 설정 합 니 다.

좋은 웹페이지 즐겨찾기