nginx 시리즈 - 04 - nginx 로그 설정

3942 단어
[TOC]
이 글 은 nginx 의 로그 설정 과 관련 된 내용 을 소개 합 니 다.
로그 설정 하면 다음 과 같은 몇 가지 가 있 습 니 다.
  • 로그 수준
  • debug
  • ……

  • 로그 기록 방식
  • 파일
  • 기타
  • 로그 형식
  • 1 log_format
    1.1 문법 형식
    이 명령 은 로그 기록 의 형식 을 설정 하 는 데 사용 된다.
    log_format name format [format ...]
        name :           ,        
    

    1.2 기본 로그 형식
    기본 적 인 상황 에서 nginx 의 기본 로그 형식 은 다음 과 같 습 니 다 (버 전 마다 약간 다 를 수 있 습 니 다).
    log_format combined '$remote_addr - $remote_user [$time_local]  '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    
    

    가능 한 로그 형식 은 다음 과 같 습 니 다.
    192.168.161.1 - - [25/Oct/2016:05:39:45 +0800] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.161.126/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36"
    

    1.3 흔 한 내장 변수
    name
    DESC
    $http_x_forwarded_for
    클 라 이언 트 IP 주소
    $remote_addr
    클 라 이언 트 IP 주소
    $remote_user
    사용자 이름 (실제 사용 하 는 인증 방식 과 관계 가 있 음)
    $time_local
    접근 시간 및 사용자 가 있 는 시간 대
    $request
    URL 및 HTTP 프로 토 콜 버 전
    $status
    클 라 이언 트 에 게 보 내 는 HTTP 상태 코드, 예 를 들 어 200, 302, 304, 404, 500 등
    $body_bytes_sent
    클 라 이언 트 에 게 보 내 는 데이터 크기
    $http_referer
    사용 자 는 어느 URL 에서 현재 URL 에 도 달 했 습 니까?예 를 들 어 일반적인 체인 기술 에서 사용 하 는 것 은 이 요청 헤드 입 니 다. 물론 이것 은 쉽게 모 의 사칭 할 수 있 습 니 다.
    $http_user_agent
    사용자 가 사용 하 는 탐색 에 관 한 정보
    1.4 응용
    역방향 프 록 시 인 nginx 는 백 엔 드 서버 로 전송 요청 을 할 때 백 엔 드 서버 에서 받 은 클 라 이언 트 주 소 는 nginx 의 주소 입 니 다. 사용자 정의 로그 형식 으로 해결 할 수 있 습 니 다.역방향 프 록 시 설정 처 (proxy set) 에서 도 설정 할 수 있 으 며 후속 장 에서 소개 합 니 다.
    log_format reverseRealIpFormat1 '$http_x_forwarded_for - $remote_user [$time_local]  '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    
    

    2 access_log
    이 명령 은 로그 에 접근 하 는 경로 와 형식 등 정 보 를 지정 하 는 데 사 용 됩 니 다.
    2.1 문법 형식
    access_log path [log_format_name [buffer=buffer_size | off]]
    

    2.2 예시
    접근 로그 닫 기
    access_log off;
    

    기본 설정
    # combined        ,    
    access_log logs/access.log combined;
    

    사용자 정의 로그 형식
    log_format reverseRealIpFormat1 '$remote_addr - $remote_user [$time_local]  '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    access_log /var/log/nginx/my-access.log reverseRealIpFormat1 buffer=8k;
    

    2.3 open_log_file_cache
    accesslog 에서 변 수 를 사용 할 수 있 습 니 다. 예 를 들 어:
    #     
    access_log /var/log/nginx/$server_name.log reverseRealIpFormat1;
    #    buffer    
    access_log /var/log/nginx/$server_name.log reverseRealIpFormat1 buffer=8k;
    

    그러나 여기 서 변 수 를 사용 할 때 다음 과 같은 제한 이 있 습 니 다.
  • buffer 를 사용 할 수 없습니다
  • 기록 로 그 는 로그 파일 을 열 때마다 - > 기록 - > 닫 기, IO 소모 가 너무 큽 니 다. 하지만 아래 open 를 볼 수 있 습 니 다.log_file_cache 명령.

  • open_log_file_cache 는 경로 에 변 수 를 포함 하 는 로그 설정 에서 로그 파일 의 파일 설명자 캐 시 를 설정 할 수 있 습 니 다.
    open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off;
        max:         ,                               。
        inactive:       "    ",         。
        min_uses:      ,   min_uses        。
        valid:      。
    

    예 를 들 면:
    open_log_file_cache max=655350 inactive=20s;
    

    3 error_log
    accesslog 유사, error로그 도 기록 로 그 를 설정 하 는 명령 입 니 다.하지만 오류 로 그 를 기록 하고 있 습 니 다.
    이 명령 은 http, stream, server, location 세그먼트 에서 지정 할 수 있 으 며, 더 바깥 세그먼트 의 설정 을 덮어 쓸 수 있 습 니 다.
    error_log /var/log/nginx/error.log warn;
    

    좋은 웹페이지 즐겨찾기