nginx 는 특정 로 그 를 기록 하지 않 습 니 다 (access log bypass if)

apache 는 CustomLog [env = XXX] 를 사용 하여 어떤 로 그 를 기록 하지 않 는 지 지정 할 수 있 습 니 다. nginx 자체 에는 이 기능 이 없 지만 공식 제3자 모듈 에서 ngx 를 찾 았 습 니 다.log_if_module, env 와 유사 한 기능 을 실 현 했 습 니 다. nginx 로그 형식의 자 료 를 더 알 고 싶다 면 ttlsa 의 nginx 로그 설정 을 참고 하 십시오.
1. nginx 제3자 모듈 설치
생존 시간 이전 글 'nginx 제3자 모듈 설치 방법' 참고
2. 지령 문법: accesslog_bypass_if (condition) [and] 기본 값: - 범위: main / srv / lock
"access log by pass if" 가 정의 하 는 규칙 이 사실 이 라면 해당 로 그 는 access log 에 기록 되 지 않 습 니 다. accesslog_bypass_if 당신 은 그것 을 if 로 볼 수 있 습 니 다. accesslog_bypass_만약 and 논리 연산 을 사용 할 수 있 습 니 다. 만약 현재 if 에 and 가 있다 면, 그 는 다음 if 와 공동으로 작용 합 니 다.
 
3. access_log_bypass_if 설정
다음 과 같은 여러 표현 식 의 예 입 니 다.
server {
 access_log_bypass_if ($status = 400);
 access_log_bypass_if ($host ~* 'ttlsa.com');
 access_log_bypass_if ($uri = 'status.nginx') and;
 access_log_bypass_if ($status = 200);
 }

위 에는 모두 4 개의 표현 식 이 있 는데 앞의 두 개 는 각각 독립 되 어 있 고 그룹 뒤의 두 개 는 and 로 조합 되 어 있다.즉, 상태 가 400 이거 나 host 가 ttlsa. com 이거 나 (uri 는 status. nginx 이 고 응답 상태 가 200) 인 요청 은 방문 로그 에 기록 되 지 않 습 니 다.
물론 accesslog_bypass_if 여러 곳 에서 나타 납 니 다. 공식 문 서 는 부모 설정 블록 과 하위 설정 블록 이 라 고 합 니 다. 기본 적 인 상황 에서 설정 블록 은 부모 설정 블록 을 덮어 쓰 고 부모 설정 블록 의 설정 을 계승 하지 않 습 니 다. 다음 과 같은 예 입 니 다.
server {
 access_log_bypass_if ($status = 400);
location / {
 access_log_bypass_if ($host ~* 'ttlsa.com');
 }
 }

우 리 는 $status = 400 은 전혀 효과 가 없다 는 것 을 발견 할 수 있 습 니 다. 왜냐하면 그 는 location / 안의 access 에 의 해log_bypass_덮어 쓰기
4. 참조 주소
공식 주소:https://github.com/cfsego/ngx_log_if/
 
사이트: 운영 생존 시간   사이트 주소:http://www.ttlsa.com/html/3887.html

좋은 웹페이지 즐겨찾기