이전에 Nginx 모듈 에 관 한 내용 을 많이 말 했 고 중요 한 내용 도 있 습 니 다. 그것 이 바로 Nginx 의 변수 입 니 다.변 수 는 Nginx 에서 없 는 곳 이 없다 고 할 수 있 습 니 다. 이러한 변수의 역할 과 원 리 를 이해 하 는 것 도 필요 합 니 다. 다음은 Nginx 에 관 한 모든 변 수 를 포함 하고 단독 적 으로 보면 비교적 무미건조 하고 안심 할 수 있 으 며 뒤에 도 실전 내용 이 있 습 니 다. Nginx 변수의 운행 원리 Nginx 를 둘 러 싼 변수 모듈 은 두 가지 로 나 눌 수 있 습 니 다. 하 나 는 변 수 를 제공 하 는 모듈 이 고 다른 하 나 는 변 수 를 사용 하 는 모듈 입 니 다.
변 수 를 제공 하 는 모듈
Preconfiguration 소스 코드 에서 변수 이름 을 정의 하고 변 수 를 해석 할 수 있 는 방법
변 수 를 사용 하 는 모듈
nginx. conf 를 분석 할 때 변 수 를 정의 하 는 사용 방식
즉, Nginx 가 시 작 될 때 변 수 를 정 의 했 고 요청 을 진정 으로 처리 할 때 만 nginx. conf 가 분석 한 변수 사용 방식 에 따라 Preconfiguration 에서 정 의 된 방법 으로 값 을 실제 가 져 올 수 있 습 니 다. 이것 도 변수의 두 가지 특성 입 니 다.
타성 구 치: 사용 할 때 만 조정 방법 으로 해석
변 수 는 항상 변화 할 수 있 고 그 값 은 사용 하 는 그 시간의 값 입 니 다.예 를 들 어 응답 패키지 바이트 수 를 보 내 는 것 은 실제 보 내 는 과정 에서 계속 변화 하고 있 습 니 다.
Nginx 모듈 을 제외 하고 Nginx 프레임 워 크 에 도 많은 변수 가 포함 되 어 있 습 니 다. 이러한 변 수 는 컴 파일 모듈 을 통 해 도입 할 필요 가 없습니다. 또한 Nginx 프레임 워 크 가 제공 하 는 변 수 는 처리 요청 의 세부 사항 을 반영 하기 때문에 Nginx 프레임 워 크 가 제공 하 는 변 수 를 이해 하 는 것 이 필요 합 니 다. HTTP 요청 관련 변수 HTTP 요청 에 대한 변 수 를 살 펴 보 겠 습 니 다.
arg_매개 변수 이름: URL 의 특정한 매개 변수의 값
query_string: args 변수 와 완전히 같 음
args: 모든 URL 매개 변수
is_args: URL 에 인자 가 있 으 면 되 돌려 주 시 겠 습 니까?그렇지 않 으 면 빈 상태 로 돌아 갑 니 다
content_length: HTTP 요청 에서 패키지 길 이 를 표시 하 는 Content - length 머리의 값 입 니 다.요청 에 이 인 자 를 가지 고 있 지 않 으 면 해당 하 는 값 을 찾 을 수 없습니다.
content_type: 표지 요청 패키지 형식의 Content - type 머리 값 입 니 다.사용자 요청 에 대응 하 는 인 자 를 휴대 해 야 합 니 다.
uri: 요청 한 URI (URL 과 다 르 고? 후의 매개 변 수 는 포함 되 지 않 음)
document_uri: uri 와 똑 같 습 니 다.역사적 원인 으로 존재 하 는.
request_uri: 요청 한 URL (URI 및 전체 인자 포함)
scheme: 프로 토 콜 이름, 예 를 들 어 HTTP 또는 HTTPS
request_method: 요청 방법, 예 를 들 어 GET 또는 POST
request_length: 모든 요청 내용 의 크기, 요청 행, 머리, 패키지 등
remote_user: HTTP Basic Authentication 프로 토 콜 에서 들 어 온 사용자 이름
request_body_file: 사용자 가 요청 한 패 키 지 를 파일 에 저장 하 는 경우 가 많 습 니 다. 이 변 수 는 요청 패 키 지 를 임시로 저장 하 는 파일 입 니 다.
패키지 가 매우 작 으 면 파일 을 저장 하지 않 습 니 다
client_body_in_file_only 명령 은 모든 패키지 에 파일 을 강제로 저장 하고 삭제 여 부 를 결정 할 수 있 습 니 다
request_body: 요청 한 패키지 입 니 다. 이 변 수 는 역방향 프 록 시 를 사용 하고 메모리 임시 저장 패키지 로 설정 할 때 만 유효 합 니 다
request: 원본 URL 요청, 예 를 들 어 GET /? a = 1 & b = 22 HTTP / 1.1
host
요청 줄 에서 먼저 가 져 오기
Host 헤드 가 있 으 면 요청 줄 의 호스트 이름
을 그 값 으로 교체 합 니 다.
앞의 두 가 지 를 모두 얻 지 못 하면 일치 하 는 server 를 사용 합 니 다.name
http_머리 이름: 머리 에 요청 한 값 의 특수 변 수 를 되 돌려 줍 니 다. 이 변 수 는 처 리 됩 니 다.
http_host
http_user_agent
http_referer
http_via
http_x_forwarded_for
http_cookie
일반적인 변 수 는 상기 변 수 를 제외 하고 대응 하 는 값 을 얻 을 수 있 습 니 다. TCP 연결 변수 다음은 TCP 연결 에 대한 변수 입 니 다.
binary_remote_addr: 클 라 이언 트 주소 의 성형 형식 은 IPv 4 에 대해 4 바이트 이 고 IPv 6 에 대해 16 바이트 이기 때문에 limitreq 와 limitconn 에 서 는 보통 key (상세 한 내용: Nginx 가 HTTP 요청 을 처리 하 는 11 단계 의 preaccess 단계)
로 사용 할 수 있 습 니 다.
connection: 증가 하 는 연결 번호
connection_requests: 현재 연결 에서 실 행 된 요청 수 는 keepalive 연결 에 의미 가 있 습 니 다
remote_addr: 클 라 이언 트 주소
remote_port: 클 라 이언 트 포트
proxy_protocol_addr: proxy 를 사용 하면protocol 프로 토 콜 은 프로 토 콜 의 주 소 를 되 돌려 줍 니 다. 그렇지 않 으 면 비어 있 습 니 다
proxy_protocol_port: proxy 를 사용 하면protocol 프로 토 콜 은 프로 토 콜 의 포트 를 되 돌려 줍 니 다. 그렇지 않 으 면 비어 있 습 니 다
server_addr: 서버 주소
server_port: 서버 엔 드 포트
TCP_INFO: TCP 내 핵 층 파라미터, $tcpinfo 포함rtt, $tcpinfo_rttvar,$tcpinfo_snd_cwnd, $tcpinfo_rcv_space
server_protocol: 서버 엔 드 프로 토 콜, 예 를 들 어 HTTP / 1.1
Nginx 처리 요청 과정 에서 발생 하 는 변수 Nginx 가 HTTP 요청 을 처리 하 는 과정 에서 도 많은 변수 가 발생 합 니 다.
request_time: 현재 까지 처리 요청 시간, 단 위 는 초, 밀리초
까지 정확 합 니 다.
server_name: 요청 한 server 와 일치 합 니 다.name 값
https: TLS / SSL 을 켜 면 on 으로 돌아 갑 니 다. 그렇지 않 으 면 비어 있 습 니 다
request_completion: 처리 요청 이 완료 되면 OK 로 돌아 갑 니 다. 그렇지 않 으 면 비어 있 습 니 다
request_id: 16 진 출력 요청 으로 id 를 표시 합 니 다. 이 id 는 모두 16 개의 바이트 가 포함 되 어 있 으 며 무 작위 로 생 성 되 었 습 니 다
request_filename: 접근 할 파일 의 전체 경로
document_루트: URI 와 루트, alias 규칙 으로 생 성 된 폴 더 경로
realpath_root: document루트 의 소프트 링크 등 을 실제 경로 로 바 꿉 니 다
limit_rate: 클 라 이언 트 응답 시 속도 상한 선 을 되 돌려 줍 니 다. 단 위 는 초당 바이트 입 니 다.set 명령 을 통 해 요청 에 대한 효 과 를 수정 할 수 있 습 니 다
HTTP 응답 을 보 낼 때 관련 변수
body_bytes_sent: 응답 중인 body 패키지 의 길이
bytes_sent: 모든 http 응답 길이
status: http 응답 중의 반환 코드
sent_trailer_이름: 응답 끝 내용 의 값 을 되 돌려 줍 니 다
sent_http_머리 이름: 응답 중의 구체 적 인 머리 값 특수 처리, 아래 변 수 는 특수 처 리 를 거 쳐 야 합 니 다.
sent_http_content_type
sent_http_content_length
sent_http_location
sent_http_last_modified
sent_http_connection
sent_http_keep_alive
sent_http_transfer_encoding
sent_http_cache_control
sent_http_link
통용: 위의 이 머리 를 제외 하고 다른 머리 는 모두 통용 형 이 며, 즉 직접 사용 할 수 있다. Nginx 시스템 변수
time_local: 로 컬 시간 기준 으로 출력 되 는 현재 시간, 예 를 들 어 14 / nov / 2018: 15: 55: 37 + 0800
time_iso 8601: ISO 8601 표준 출력 을 사용 하 는 현재 시간, 예 를 들 어 2018 - 11 - 14T 15: 55: 37 + 08: 00
nginx_version: Nginx 버 전 번호
pid: worker 프로 세 스 의 프로 세 스 id
pipe: 파 이 프 를 사용 하면 p 로 돌아 갑 니 다. 그렇지 않 으 면 돌아 갑 니 다.
hostname: 서버 의 호스트 이름 으로 hostname 명령 출력 과 일치 합 니 다
msec: 1970 년 1 월 1 일부 터 지금까지 의 시간, 단 위 는 초, 소수점 후 밀리초
응답 과 설정 파일 의 값 이 일일이 대응 하 는 지 비교 하여 변수의 의 미 를 더욱 깊이 이해 할 수 있 습 니 다. 자, 이번 절 에 우 리 는 공부 했다.Nginx 의 변 수 는 끝 났 습 니 다. 다음 절 에 실제 응용 변수의 두 모듈 을 이야기 하면 더욱 깊 은 이 해 를 얻 을 수 있 습 니 다. 본 고 는 제 개인 블 로그: iziyang. github. io 에서 시작 되 었 습 니 다. 모든 프로필 은 Nginx 프로필 에 두 었 습 니 다. 여러분 이 직접 찾 으 실 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: