전단 개발 nginx 상용 기능 의 server & location 일치 규칙 파악
1. 서버 일치 규칙
nginx 의
server
블록 은 여러 개 를 설정 할 수 있 습 니 다. 그러면 하나의 요청 은 그 server 블록 과 일치 합 니 다. 이것 은 주로 server 블록 server_name
과 listen
에 따라 결 정 됩 니 다.그 중에서 server_name
요청 한 "Host" 헤드 만 검사 하여 이 요청 을 어느 가상 호스트 가 처리 해 야 할 지 결정 합 니 다.먼저 예 를 하나 봅 시다.
server {
listen 8001;
server_name *.net;
}
server {
listen 8001;
server_name baidu.net;
}
server {
listen 8001;
server_name baidu.*;
}
테스트 를 통 해 같은 listen 포트 를 발견 한 경우 여러 server 의 일치 순 서 는 다음 과 같 습 니 다.
server {
listen 8001;
server_name baidu.net;
}
server { # server listen ,root 80 , root 8080
server_name server.com;
}
위 8001 포트 에 server 가 하나 밖 에 없 는 경우 모든 servername 접근
server_name:8001
은 위의 server 블록 과 일치 합 니 다.또 다른 특수 한 상황 에서 server 블록 이 설정 한 가상 호스트 는 도 메 인 이름과 IP 를 혼합 한 것 입 니 다.다음 과 같다.
server {
listen 192.168.1.1:8001;
server_name example.org www.example.org;
...
}
server {
listen 192.168.1.1:8002;
server_name example.com www.example.com;
...
}
이 경우 일치 하 는 순 서 는:
두 번 째 는 요청 한 Host 헤드 가 server 와 일치 하 는 지 확인 하기 위해 보충 이 필요 합 니 다.name, 하나의 조건 을 만족 시 키 려 면 servername 에서 지정 한 도 메 인 이름 은 현재 nginx 설정 이 있 는 기계 에 접근 할 수 있 습 니 다. 도 메 인 이름 으로 nginx 가 있 는 기 계 를 방문 하 는 것 은 결국 ip 형식 으로 접근 하기 때 문 입 니 다.
예 를 들 어 www. example. org 를 방문 하여 최종 적 으로 dns 를 통 해 nginx 가 있 는 ip 주 소 를 분석 하여 방문 한 경우 이 server 가 8001 포트 를 감청 하기 때문에 www. example. org: 8001 을 통 해 192.168.1.1: 8001 이 있 는 server 블록 을 명중 시 킬 수 있 습 니 다.
2. 위치 일치 규칙
하나의 예시:
location = / {
# / ,
[ configuration A ]
}
location / {
# / ,
#
[ configuration B ]
}
location /documents/ {
# /documents/ , ,
# ,
[ configuration C ]
}
location ~ /documents/Abc {
# /documents/Abc , ,
# ,
[ configuration CC ]
}
location ^~ /images/ {
# /images/ , , , 。
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
# gif,jpg jpeg
# , /images/ config D , ^~
[ configuration E ]
}
location /images/ {
# /images/, , ^~
[ configuration F ]
}
location /images/abc {
# /images/abc, , ^~
# F G
[ configuration G ]
}
location ~ /images/abc/ {
# config D : config G , , ,
[ configuration H ]
}
location ~* /js/.*/\.js {
#
[ configuration I ]
}
=
로 시작 하여 정확 한 매 칭 을 표시 하고 매 칭 은 후속 검색 을 중지 합 니 다.A 에서 루트 디 렉 터 리 의 끝 에 만 일치 하 는 요청 이 있 으 면 다음 에 문자열 을 가 져 올 수 없습니다. ^~
로 시작 하여 uri 가 특정한 일반적인 문자열 로 시작 하 는 것 을 표시 합 니 다. 정규 일치 가 아니면 후속 검색 을 중지 합 니 다. 정규 일치 도 포함 하고 최 장 일치 원칙 ~
로 시작한다.~*
로 시작 합 니 다./
로 공통 적 으로 일치 합 니 다. 다른 일치 가 없 으 면 모든 요청 이 일치 합 니 다 location 의 우선 순위 에 대해 세 가 지 를 인지 해 야 합 니 다.
원칙 을 사용 하기 때 문 입 니 다.정규 location 매 칭 은 순서 와 관련 이 있 지만 정규 location 은 여전히
원칙 ^~
은 이 일반 규칙 이 일치 하면 후속 매 칭 을 하지 않 습 니 다. 정규 매 칭 이라도.=
엄격 한 매 칭 이 매 칭 되면 후속 정규 매 칭 이 되 지 않 습 니 다 (location =) > (location ^~ ) > (location ~,~* ) > (location ) > (location ) > (/)
위의 location 쓰기 에 따라 다음 과 같은 일치 하 는 예제 가 성립 됩 니 다.
config A
정확하게 일치 합 니 다. / index. html 도 일치 하지 않 습 니 다 config B
B 와 일치 한 후 아래 에 일치 하 는 것 이 없 으 며 B configuration D
는 F 에 일치 하고, 아래로 D 에 일치 하 며, 아래로 정지 config D
최 장 은 G 와 일치 하고, 아래 는 D 와 일치 합 니 다. 아래 를 멈 추 면 / images / 로 시작 하 는 모든 것 이 D 와 일치 하고 멈 추 는 것 을 볼 수 있 습 니 다. FG 는 여기에 쓰 여 있 는 것 은 아무런 의미 가 없습니다. H 는 영원히 돌아 가지 않 습 니 다. 여 기 는 일치 하 는 순 서 를 설명 하기 위 한 것 입 니 다 config C
C 에 일치 하고 아래 에 일치 하지 않 으 며 C configuration E
C 에 일치 하고 아래 정규 E config CC
최 장 C 까지, 아래 정규 순 서 는 CC 까지, E 까지 내 려 가지 않 습 니 다 , , :
# , , , 。
# ,
#
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/
}
레 퍼 런 스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.