> 운영 및 유지보수 > 엔진스 > 느린 응답 요청을 기록 및 분석하고 웹 사이트 응답 콘텐츠를 교체하도록 Nginx를 구성하는 방법

느린 응답 요청을 기록 및 분석하고 웹 사이트 응답 콘텐츠를 교체하도록 Nginx를 구성하는 방법

王林
풀어 주다: 2023-05-12 20:16:12
앞으로
2155명이 탐색했습니다.


1. 모듈 설치
nginx 타사 모듈 설치 방법은 여기에서 건너뜁니다.
구성 매개변수

./configure --prefix=/usr/local/nginx-1.4.1 --with-http_stub_status_module \
 --add-module=../ngx_http_log_request_speed
로그인 후 복사

2. 명령 log_request_speed
2.1 log_request_speed_filter
구문:

 log_request_speed_filter [on|off]
로그인 후 복사

구성 섹션: n/a
컨텍스트: 위치, 서버, http
모듈 활성화 또는 비활성화
2.2 log_request_speed_filter_timeout
문법:

log_request_speed_filter_timeout [num sec]
로그인 후 복사

기본값: 5초
구성 섹션: 위치, 서버, http
실제 시간 초과는 아니지만 요청이 여기에 지정된 시간을 초과하면 nginx 오류 로그에 기록된다는 의미입니다. 5000 마이크로초(5초), 요청이 5초 미만이면 로그에 기록되지 않으며, 5초를 초과하면 nginx 오류 로그에 요청이 기록됩니다
3. 3.1 nginx 구성

http{
   log_request_speed_filter on;
   log_request_speed_filter_timeout 3;
   ...
}
로그인 후 복사

오류 로그에 기록된 느린 요청은 다음과 같습니다


느린 응답 요청을 기록 및 분석하고 웹 사이트 응답 콘텐츠를 교체하도록 Nginx를 구성하는 방법

3.2 로그 분석

cd /usr/local/nginx-1.4.1/logs
wget http://wiki.nginx.org/images/a/a8/log_analyzer.tar.gz
tar -xzvf log_analyzer.tar.gz
cd request_speed_log_analyzer
# cat ../error.log | grep 'process request'| ./analyzer.pl -r
로그인 후 복사
post /wp-admin/admin-ajax.php http/1.1 --- avg ms: 1182, value count: 2
get /shmb/1145.html http/1.1 --- avg ms: 2976, value count: 1 <--- the winner
로그인 후 복사

로그에서 여기에 2개의 느린 요청이 있는 것으로 나타났습니다. 가장 느린 요청은 다음과 같습니다. /shmb/ 1145.html, 그리고 "승자"라고 표시되어 있습니다. 작성자님, 당신이 승리했습니다. 매우 유머러스합니다.

3.3 스크립트 구문 분석

# ./analyzer.pl -h
로그인 후 복사

  • -h : 이 도움말 메시지 # 도움말 메시지 표시

  • -u : 업스트림별 그룹화 # 업스트림별 그룹화

  • -o : 호스트별 그룹화 # 호스트별 그룹화

  • -r : 요청별로 그룹화 # 요청별로 그룹화, 권장

4.nginx 테스트 버전

현재 작성자는 0.6.35 및 0.7.64에서만 테스트하며 가능하다고 보장하지 않습니다. 다른 환경에서 사용됩니다. 현재 테스트 버전은 1.4.1 이며, 현재 정상적으로 사용하고 있으니 꼭 테스트해 보시기 바랍니다.

nginx는 웹사이트 응답 콘텐츠(ngx_http_sub_module)를 대체합니다.
ngx_http_sub_module 모듈은 웹사이트 응답 콘텐츠의 문자열을 수정하는 필터입니다. 예를 들어 응답 콘텐츠의 'jb51'을 모두 '이 사이트'로 바꾸려는 경우입니다. , 이 모듈은 nginx에 내장되어 있지만 기본적으로 설치되지 않습니다. 설치해야 하는 경우 구성 매개변수 --with-http_sub_module

1을 추가해야 합니다. 지침(지시문)
구문: ​​

sub_filter string replacement;
로그인 후 복사

기본값:  —

구성 섹션:  http, 서버, 위치
설정에서 설명 문자열을 사용하여 설명 문자열을 교체해야 하며 교체는 다음을 포함할 수 있는 새 문자열입니다. 변수.
구문:

sub_filter_last_modified on | off;
로그인 후 복사

기본값: sub_filter_last_modified off;

구성 섹션: http, server, location
이 명령은 nginx 1.5.1에 ​​추가되었으므로 이 버전에서는 무시할 수 있습니다. 응답 캐싱을 용이하게 하기 위해 교체 중 원래 응답의 "마지막 수정" 헤더 필드입니다.
기본적으로 헤더 필드는 처리 중에 응답 내용이 수정되면 제거됩니다.
구문:

 sub_filter_once on | off;
로그인 후 복사

기본값: sub_filter_once on;

구성 섹션: http, server, location

문자열 교체는 1회 또는 여러 번, 기본 교체는 1회입니다. 예를 들어 응답 내용의 jb51을 이 사이트로 교체하려는 경우 jb51이 여러 개 나타나면 첫 번째만 교체됩니다. 꺼져 있으면 jb51이 모두 교체됩니다.
구문:

 sub_filter_types mime-type ...;
로그인 후 복사

기본값: sub_filter_types text/html;

구성 섹션: http, 서버, 위치

교체해야 할 MIME 유형을 지정하세요. 기본값은 " text/html", *로 지정하면 모두

2.nginx 대체 문자열 예시
2.1 구성

server {
  listen    80;
  server_name www.jb51.net;
 
  root /data/site/www.jb51.net;  
 
  location / {
    sub_filter jb51 &#39;本站&#39;;
    sub_filter_types text/html;
    sub_filter_once on;
  }
}
로그인 후 복사

2.2 테스트

내용은 다음과 같습니다

# cat /data/site/www.jb51.net/2013/10/20131001_sub1.html
로그인 후 복사
welcome to jb51!
jb51 team!
로그인 후 복사
접근 결과

# curl www.jb51.net/2013/10/20131001_sub1.html
로그인 후 복사
로그인 후 복사

welcome to 本站!
jb51 team!
로그인 후 복사

We 교체는 대소문자를 구분하지 않으며 jb51은 한 번만 교체되었음을 알 수 있습니다. sub_filter_once를 on으로 변경해 보았습니다.

location / {
  sub_filter jb51 &#39;本站&#39;;
  sub_filter_once off;
}
로그인 후 복사

그런 다음 테스트

# curl www.jb51.net/2013/10/20131001_sub1.html
로그인 후 복사
로그인 후 복사
welcome to 本站!
本站 team!
로그인 후 복사

jb51이 교체된 것을 확인할 수 있습니다.

예를 들어 뒤에 js 조각을 추가하려는 경우 구성은 다음과 같습니다.

location / {
  sub_filter   </head> &#39;</head><script language="javascript" src="$script"></script>&#39;;
  sub_filter_once on;
}
로그인 후 복사

위 내용은 느린 응답 요청을 기록 및 분석하고 웹 사이트 응답 콘텐츠를 교체하도록 Nginx를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿