Nginx 설정 명령 의 실행 순서 (9)
10691 단어 nginx
server-rewrite
단계 뒤에 find-config
단계이 단 계 는 Nginx 모듈 등록 처리 프로그램 을 지원 하지 않 고 Nginx 핵심 으로 현재 요청 과 location
블록 간 의 짝 짓 기 작업 을 설정 합 니 다.이 단계 까지 는 요청 이 없 었 다 는 얘 기다. location
블록 연결 설정.그래서 find-config
단계 이전의 post-read
화해시키다 server-rewrite
단계 server
블록 설정 및 더 바깥쪽 역할 영역 에서 의 설정 명령 이 작 동 합 니 다.이것 이 바로 왜 server
에 만 쓰 여 있 는 것 입 니까? 설정 블록의 ngx_rewrite 모듈 명령 이 실 행 됩 니 다. server-rewrite
단계, 이것 도 왜 앞의 모든 예 중의 ngx_realip 모듈 의 지령 도 모두 특별히 쓰 여 있다 server
블록 에 등록 할 수 있 도록 설정 합 니 다. post-read
단계 의 처리 절 차 는 효력 이 발생 할 수 있다.Nginx 가 있 을 때
find-config
단계 가 하나 일치 하 는 데 성공 하 였 습 니 다 location
블록 을 설정 하면 오류 로그 파일 에 디 버 깅 정 보 를 즉시 인쇄 합 니 다.우 리 는 이러한 예 를 보 자. location /hello {
echo "hello world";
}
Nginx 의 '디 버 깅 로그' 를 사용 하면 요청 합 니 다.
/hello
인터페이스 error.log
파일 에서 다음 줄 의 정 보 를 걸 러 냅 니 다: $ grep 'using config' logs/error.log
[debug] 84579#0: *1 using configuration "/hello"
우 리 는 여기에 놓 을 수 있 도록 정보 줄 의 첫 번 째 시간 표를 생략 했다.
운행
find-config
단계 뒤의 것 은 바로 우리 의 오 랜 친구 이다. rewrite
단계이미 find-config
단계 현재 요청 완료 및 location
그래서 rewrite
단계 시작, location
블록 에 있 는 명령 을 설정 하면 역할 을 할 수 있 습 니 다.앞에서 이미 소개 하 였 다. ngx_rewrite 모듈 명령 location
블록 에서 실 행 될 때 바로 이것 입 니 다. rewrite
단계그리고 ngx_set_misc 모듈 의 명령 도 마찬가지 입 니 다. 그리고... ngx_lua 모듈 러 set_by_lua 지령 rewrite_by_lua 지령 도 예 외 는 아니다.rewrite
단 계 를 뒤로 미 루 는 것 이 소위 말 하 는 것 이다. post-rewrite
단계이 단계 도 비슷 해 요. find-config
단 계 는 Nginx 모듈 등록 처리 프로그램 을 받 아들 이지 않 고 Nginx 핵심 으로 이 루어 집 니 다. rewrite
단계 에서 요구 하 는 '내부 점프' 동작 (만약 rewrite
단계 에 이런 요구 가 있다 면).이전 (2) '내부 도약' 이라는 개념 을 소개 하면 서 어떻게 통과 하 는 지 보 여 줬 다. echo_exec 명령 혹은 rewrite 내부 도약 을 명령 하 다.... 때문에 echo_exec 명령 어 실행 content
단계 post-rewrite
단계 와 상 관 없 이 우리 가 흥 미 를 느끼 는 것 은 운행 만 남 았 다. rewrite
단계 적 rewrite 지령돌 이 켜 보다 (2) 보 여 준 이 예: server {
listen 8080;
location /foo {
set $a hello;
rewrite ^ /bar;
}
location /bar {
echo "a = [$a]";
}
}
여기
location /foo
통과되다 rewrite 명령 은 현재 요청 한 URI 를 무조건 변경 합 니 다. /bar
'내부 점프' 를 동시에 시작 하여 결국 뛰 어 들 었 다. location /bar
맞다이곳 에서 비교적 재 미 있 는 곳 은 '내부 도약' 의 작업 원리 이다.'내부 도약' 은 본질 적 으로 현재 의 요청 처리 단 계 를 강제로 후퇴 시 키 는 것 이다. find-config
단계, 요청 URI 와 location
블록의 짝 을 설정 합 니 다.예 를 들 어 상례 에서 운행 은 rewrite
단계 적 rewrite 명령 은 현재 요청 한 처리 단 계 를 되 돌 렸 다. find-config
단계현재 요청 한 URI 가 rewrite 명령 /bar
그래서 이번에 바 꿨 어 요. location /bar
현재 요청 과 연 결 된 다음 에 이어서 rewrite
단계 아래로 집행 하 다.하지만 여기 서 더 재 미 있 는 점 은 뒤로 물 러 서 는 것 이다.
find-config
단계 의 동작 은 결코 발생 한 것 이 아니다. rewrite
단계 post-rewrite
단계상례 중의 rewrite 명령 은 Nginx 에 게 간단하게 지시 할 뿐 필요 합 니 다. post-rewrite
단계 에서 '내부 도약' 을 시작 하 다.이 디자인 은 Nginx 초보 자 에 게 좀 이상 하 게 보일 수 있 습 니 다. '왜 직접 있 지 않 습 니까? rewrite "명령 을 실행 할 때 바로 점프 를 합 니까?" 답 은 간단 합 니 다. 그것 은 처음에 일치 하기 위해 서 입 니 다. location
블록 에 URI 를 여러 번 반복 해서 쓰 는 것 을 지원 합 니 다. 예 를 들 어: location /foo {
rewrite ^ /bar;
rewrite ^ /baz;
echo foo;
}
location /bar {
echo bar;
}
location /baz {
echo baz;
}
여기
location /foo
현재 요청 한 URI 를 두 번 연속 으로 바 꿉 니 다. 첫 번 째 는 무조건 바 꿉 니 다. /bar
, 두 번 째 는 무조건 /baz
. 이 두 개 는 rewrite 문 구 는 결국 post-rewrite
단계 에서 '내부 점프' 동작 이 발생 하여 URI 를 처음 고 칠 때 현재 의 것 에서 바로 떨 어 지지 않 습 니 다. location
뒤에 rewrite 문 구 는 실행 할 기회 가 없다.요청 /foo
인터페이스의 결 과 는 이 점 을 증명 했다. $ curl localhost:8080/foo
baz
출력 결 과 를 보면 상례 에서 확실히 성공 적 으로
/foo
한 발 짝 뛰 었 다. /baz
맞다Nginx '디 버 깅 로그' 를 사용 하면 find-config
단계 생 성의 locatin
블록의 일치 정보 에서 이 점 을 더욱 증명 합 니 다. $ grep 'using config' logs/error.log
[debug] 89449#0: *1 using configuration "/foo"
[debug] 89449#0: *1 using configuration "/baz"
이번 요청 에 대해 Nginx 는 모두 일치 하 는 것 을 보 았 습 니 다.
/foo
화해시키다 /baz
이 두 개 location
그래서 '내부 점프' 가 한 번 밖 에 발생 하지 않 았 다.하면, 만약, 만약...
server
설정 블록 에서 직접 사용 rewrite 요청 URI 에 대한 변경 명령 을 설정 하면 '내부 전환' 과 관련 되 지 않 습 니 다. 이 때 URI 변경 이 발생 했 기 때 문 입 니 다. server-rewrite
단계 location
짝 짓 기 find-config
단계예 를 들 어 다음 의 이 예 는: server {
listen 8080;
rewrite ^/foo /bar;
location /foo {
echo foo;
}
location /bar {
echo bar;
}
}
여기
server-rewrite
단 계 는 그 걸 로... /foo
시작 URI /bar
, 이때 요청 은 아무것도 하지 않 았 습 니 다 location
연결 되 어 있 기 때문에 Nginx 는 정상적으로 아래로 운행 합 니 다. find-config
단계 location
일치 하 다.하면, 만약, 만약... /foo
그러면 location /foo
일치 할 기회 가 전혀 없습니다. 첫 번 째 (유일한) 운행 find-config
때 문 입 니 다. 단계 시 현재 요청 한 URI 가 변경 되 었 습 니 다. /bar
일치 만 합 니 다. location /bar
. 실제 요청 한 출력 은 다음 과 같 습 니 다. $ curl localhost:8080/foo
bar
Nginx "디 버 깅 로그" 는 우리 의 결론 을 다시 한 번 입증 할 수 있 습 니 다.
$ grep 'using config' logs/error.log
[debug] 92693#0: *1 using configuration "/bar"
보 실 수 있 습 니 다. Nginx 는 총 한 번 밖 에 진행 되 지 않 았 습 니 다.
location
일치 합 니 다. '내부 점프' 가 발생 하지 않 았 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.