nginx 상세 설명 (2)
문서 연결:http://nginx.org→documentation→ngx_http_log_module
변수 의미:
$remote_user: 클 라 이언 트 사용자 이름 은 보통 "-" 입 니 다.
$time_local :클 라 이언 트 의 방문 시간, 형식 은 보통 '26 / Jun / 2014: 14: 44: 34 + 0800' 입 니 다.
$request :클 라 이언 트 가 요청 한 URI 입 니 다.
html 페이지 요청 시 "/ index. html HTTP / 1.1",
php 페이지 를 '/ index. php? =' 로 요청 합 니 다.PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1”
$status :응답 상태 코드.여기 가 정상 이면 200 이 야.
$body_bytes_sent: 서버 가 클 라 이언 트 에 보 낸 바이트 수 입 니 다.
$http_referer: 클 라 이언 트 의 출처 를 인용 하여 클 라 이언 트 가 어디에서 왔 는 지 설명 합 니 다. 아마도 체인 일 것 입 니 다.
예컨대http://172.16.100.18/index.html첨가http://172.16.100.1/index.html웹 페이지 의 콘 텐 츠 링크 는 172.16.100.1 의 로그 에서 요청 클 라 이언 트 가 Real - client - IP 가 아 닌 172.16.100.18 임 을 볼 수 있다.
Real - client - IP 가 php 요청 내용 이 라면 로그 에 172.16.100.1 자신 에 대한 요청 이 포 함 될 수 있 습 니 다.
다음은http://172.16.100.18/index.htmlhtml 하이퍼링크 언어 사용 가능 (영어 따옴표 주의):
<html>
<head><title>Welcome</title></head>
<body>
<h1><font size="10" color="blue"> </font></h1>
<a href="http://172.16.100.1/index.html">index.html</a>
<br/><a href="http://172.16.100.1/index.php">index.php</a>
</body>
</html>
$http_user_에이전트: 사용자 의 브 라 우 저 모델 은 일반적으로 국산 브 라 우 저 를 먼저 분석 한 다음 에 외국 브 라 우 저 입 니 다.
여행: Mozilla / 5.0 (Windows NT 6.1; WOW 64) AppleWebKit / 537.36 (KHTML, like Gecko) Maxthon / 4.4.2.800 Chrome / 30..1599.101 Safari / 537.36
IE10:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)
$http_x_forwarded_for: nginx 가 백 엔 드 서버 일 때 실제 클 라 이언 트 IP 를 기록 해 야 할 때,
프론트 엔 드 nginx 프 록 시 서버 는 location 세그먼트 에 추가 해 야 합 니 다.
"proxy_set_header realip $remote_addr"
이 필드 도 "$http realip" 로 변경 해 야 합 니 다.
백 엔 드 가 Apache 라면 로그 형식 정의 세그먼트 combined 에 '% {realip} i' 를 추가 하여 실제 클 라 이언 트 IP 를 기록 해 야 합 니 다.
access_log off 는 방문 로 그 를 닫 는 것 을 표시 합 니 다. 예 를 들 어 방문 할 때:http://IP/status시.
2.8 접근 제어 모듈
ngx_http_access_module (IP 기반 인증)
location / {
root /web/htdocs;
index index.html;
deny 192.168.1.1;
allow 192.168.1.0/24;
deny 172.16.100.5;
allow 172.16.100.0/16;
deny all;
}
nginx_http_auth_basic_module (사용자 인증 기반)
location /yinsi {
root /web/htdocs;
index index.html;
auth_basic "user_auth";
basic , authname
auth_basic_user_file /etc/nginx/.user_auth;
Apache htpasswd 。
}
#htpasswd -c -m /etc/nginx/.user_auth yh
。
#elinks
2.9 자동 색인 기능
autoindex
사용자 가 접근 하 는 경로 에서 홈 페이지 를 사용 하지 않 거나 홈 페이지 파일 이 없 으 면 경로 에 있 는 모든 파일 을 목록 으로 표시 할 수 있 습 니 다.이런 방식 은 비교적 위험 하 다. 일반적으로 극력 피 하 는 것 이지 만 다운로드 사이트 로 서 는 좋다.
location /download {
root /www/htdocs/download;
autoindex on;
autoindex localtime;
autoindex_exact_size on; , 。
}
#elinks http://IP/download
3.0 사용자 정의 응답 첫 번 째 부분 추가:
ngx_http_headers_module
형식:
add_header custom-header-name nginx 내장 변수
추가 할 수 있 는 "nginx 내장 변수" 머리 정보 가 많 습 니 다. 이 변 수 는 이 경 로 를 통 해 얻 을 수 있 습 니 다: ngxhttp_core_module→Embedded Variables
add_header server_ip $server_addr IP ,
Google →F12→Network→index.html→Response Headers→Real-Client-IP
3.1 재 작성 모듈:
nginx_http_rewrite_module:
URL 재 작성 완료: 예 를 들 어 원래 방문 한 것 은?http://www.yh_old. com / bbs / index. html 이지 만 여러 가지 이유 로 bbs 디 렉 터 리 가 존재 하지 않 거나 도 메 인 이름 이 변경 되 었 을 때 오래된 URL 을 새 URL 로 다시 쓸 수 있 습 니 다.http://www.yh_new/images/index.html。이 부분 이 야 말로 어 려 운 부분 이다.
Syntax:rewrite regex replacement [flag];
Default:―
Context:server, location, if
간단 한 재 작성:
location / {
root /web/htdocs;
index index.html index.php;
rewrite /bbs/(.*)$ /images/$1 last;
}
http://IP/bbs/ , http://IP/images/ 。 , "\1" "$1"。
규칙 을 다시 쓰 는 것 은 여러 가지 가 있 기 때문에 각 규칙 간 의 관 계 를 정의 하 는 것 이 필수 적 이다.
첫 번 째 상황:
last: 첫 번 째 재 작성 이 끝 난 후 바로 뛰 어 내 린 다음 새로운 URL 을 사용 하여 rewrite 규칙 과 일치 합 니 다.
brak: 첫 번 째 재 작성 이 끝 난 후에 새로운 URI 에 직접 접근 하 였 습 니 다. rewrite 규칙 이 일치 하지 않 습 니 다.
location 뒤에 구체 적 인 경로 가 있 거나 IF 구문 에서 break 를 사용 해 야 합 니 다.
redirect: 다시 쓰 는 것 이 아니 라 교체 메커니즘 을 사용 합 니 다.last 와 유사 합 니 다. 첫 번 째 교체 후 다시 한 번 확인 해 야 합 니 다.
302 코드 를 되 돌려 주 고 임시로 방향 을 바 꾸 는 것 도 디 스 플레이 방향 을 바 꾸 는 것 이 라 고 합 니 다.
permanent: 301 코드 를 되 돌려 주 고 영구적 으로 방향 을 바 꾸 는 것 을 암시 적 으로 방향 을 바 꾸 는 것 이 라 고도 합 니 다.
server {
...
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;
...
}
: server , media audio mp3 , last 。
location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
}
http://IP/download , rewrite URL 。 , 10 , 500 。
IF 판단:
Syntax:if (condition) { ... }
Default:―
Context:server, location
...
if ($request_uri ~* \.(jpg|png|gif|html)$) {
...
}
...
URI if , , ...
location , , 。
condition 의 정규 일치:
~ :지정 한 정규 모드 와 일치 할 때 '진짜' 로 돌아 갑 니 다.일치 할 때 문자 의 대소 문 자 를 구분 합 니 다.
~ *: 기능 은 같 지만 일치 할 때 구분 되 지 않 는 문자 의 대소 문자 입 니 다.
!~ :지정 한 정규 모드 와 일치 하지 않 을 때 돌아 오 는 것 이 '진짜' 입 니 다.대소 문 자 를 구분 하 다.
!~*:위 와 같 지만 대소 문 자 는 구분 하지 않 습 니 다.
condition 의 파일 및 디 렉 터 리 일치:
-f,!-f: 지정 한 경로 가 존재 하 는 지 판단 하고 파일 입 니 다.
-d,!-d: 지정 한 경로 가 존재 하 는 지 판단 하고 디 렉 터 리 입 니 다.
-e,!-e: 지정 한 경로 의 디 렉 터 리 나 파일 이 존재 하 는 지 판단 합 니 다.
-x,!-x: 지정 한 경로 의 파일 이 존재 하 는 지 판단 하고 실행 할 수 있 습 니 다.
IF 의 실제 응용 장면 은 nginx 의 내 장 된 변수 값 과 일치 하 는 데 사 용 됩 니 다. 이것 은 location 에서 할 수 없 는 것 입 니 다.
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
, , IE, msie
if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
set $id $1;
}
cookie ,
if ($request_method = POST) {
return 405;
}
POST , 405 。
if ($request_method == PUT) {
proxy_pass http://upload.yh.com;
}
PUT , upstream。
#curl -T /etc/fstab http://IP
if ($slow) {
limit_rate 10k;
}
$slow ( 1 0), 1 , 。
if ($invalid_referer) {
return 403;
}
, 403 。
위 에 return, set 가 있 고 재 작성 모듈 에 속 하기 때문에 설명 이 필요 합 니 다.
return: 클 라 이언 트 에 게 지정 한 상태 코드 (code) 를 처리 하지 않 고 되 돌려 줍 니 다. URL 에 변 수 를 포함 할 수 있 습 니 다.
Syntax:return code [text];
return code URL;
return URL;
Default:―
Context:server, location, if
set: 변 수 를 정의 하고 값 을 부여 합 니 다. 값 은 텍스트, 변수 또는 텍스트 변수 혼합 체 일 수 있 습 니 다.
Syntax:set $variable value;
Default:―
Context:server, location, if
3.2 상태 정보 출력:
ngx_http_stub_status_module:
Syntax:stub_status;
Default:―
Context:server, location
location /status {
stub_status on;
access_log off;
auth_basic "stub_user_auth";
auth_basic_user_file /etc/nginx/.stub_user_auth;
}
, , 。
#elinks http://IP/status
Active connections: 3
server accepts handled requests
3 3 1
Reading: 0 Writing: 1 Waiting: 2
Active connections: 。
accepts: 。
handled: 。
requests: 。( tcp , )
reading: 。
writing: 。
waiting: reading+writing 。
3.3 압축 모듈:
ngx_http_gzip_module
Syntax:gzip on | off;
Default:gzip off;
Context:http, server, location, if in location
gzip on|off;
이 모듈 을 사용 할 지 여부 입 니 다.
gzip_buffers number size;
캐 시 압축 응답 버퍼 의 수량 과 크기 를 지정 합 니 다. 설정 하지 않 으 면 캐 시 영역 크기 는 페이지 크기 이 고 환경 에 따라 4k 또는 8k 일 수 있 습 니 다.
gzip_comp_level level;
압축 단계 1 - 9.
gzip_disable regex;
정규 에 부합 되 는 것 은 압축 을 지원 하지 않 는 사장 IE6 에 적응 하기 위해 압축 하지 않 는 다.
gzip_min_length length;
압축 해 야 할 파일 의 최소 값 입 니 다. 그렇지 않 으 면 압축 이 무의미 하고 CPU 만 낭비 합 니 다.
gzip_http_version 1.0|1.1;
HTTP 요청 버 전에 따라 gzip 압축 을 사용 할 지 여부 입 니 다. HTTP 버 전이 1.0 일 때 Vary: Accept - Encoding 이 설정 되 지 않 았 습 니 다. 이것 은 일부 프 록 시 캐 시 를 무효 화 할 수 있 습 니 다. add 를 사용 할 수 있 습 니 다.header, 마찬가지 로 이 버 전 을 사용 할 때 Content - Length 도 설정 되 어 있 지 않 기 때문에 Keepalive 는 이 버 전에 서 사용 할 수 없습니다.
gzip_proxied off;
일부 요청 과 응답 에 따라 프 록 시 요청 에 대한 응답 을 압축 할 지 여 부 를 결정 합 니 다. 그 다음 에 선택 할 수 있 는 인자 가 많 습 니 다.
압축 여 부 를 확인 하 는 방법:
F12 → 네트워크 → 웹 페이지 → Accept - Encoding: gzip, deflate, sdch
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.