Nginx 의 일치 규칙 어댑터
4858 단어 Lnmp
= 맞다
^~ 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 파일 로 재 설정 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 설정 웹 소켓 부하 균형일반적인 상황 에서 개발 자 는 개발 과정 에서 websocket 의 세 션 상태 session 을 집합 을 통 해 메모리 에 관리 하고 다 중 노드 분포 식 상황 에서 IP 를 사용 할 수 있 습 니 다.HASH ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.