초 상세!Nginx 로그 설정 실천

머리말
Nginx 로 그 는 통계, 시스템 서비스 오류 에 유용 합 니 다.
Nginx 로 그 는 주로 두 가지 로 나 뉜 다. accesslog (방문 로그) 와 errorlog (오류 로그).로그 에 접근 하면 사용자 의 IP 주소, 브 라 우 저의 정보, 요청 한 처리 시간 등 정 보 를 얻 을 수 있 습 니 다.오류 로 그 는 접근 오류 정 보 를 기록 하여 잘못된 원인 을 찾 는 데 도움 을 줄 수 있 습 니 다.
이 글 은 Nginx 로 그 를 어떻게 설정 하 는 지 상세 하 게 설명 할 것 이다.
access 설정log
방문 로 그 는 주로 클 라 이언 트 의 요청 을 기록 합 니 다.클 라 이언 트 가 Nginx 서버 에 요청 한 모든 요청 이 여기에 기록 되 어 있 습 니 다.클 라 이언 트 IP, 브 라 우 저 정보, refer, 요청 처리 시간, 요청 URL 등 은 방문 로그 에서 얻 을 수 있 습 니 다.물론 어떤 정 보 를 구체 적 으로 기록 해 야 하 는 지 log 를 통 해format 명령 정의.
문법
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; 
#       

access_log off; 
#       
  • path 지정 로그 의 저장 위치 입 니 다.
  • format 지정 로그 의 형식 입 니 다.기본적으로 미리 정 의 된 combined 를 사용 합 니 다.
  • buffer 는 로그 기록 시의 캐 시 크기 를 지정 합 니 다.기본 값 은 64k 입 니 다.
  • gzip 로 그 를 쓰기 전에 압축 합 니 다.압축 률 은 1 부터 9 까지 수치 가 클 수록 압축 비율 이 높 고 압축 속도 도 느리다 는 것 을 지정 할 수 있다.기본 값 은 1.
  • flush 는 캐 시 를 설정 하 는 유효 시간 입 니 다.flush 가 지정 한 시간 을 초과 하면 캐 시 에 있 는 내용 이 삭 제 됩 니 다.
  • if 조건 판단.지정 한 조건 이 0 이나 빈 문자열 로 계산 되면 로 그 를 쓰 지 않 습 니 다.

  • 또 하나의 특별한 값 off 가 있 습 니 다.이 값 을 지정 하면 현재 역할 영역 에 있 는 모든 요청 로그 가 닫 힙 니 다.
    역할 영역
    access 적용 가능log 명령 의 역할 영역 은 http, server, location, limit 가 있 습 니 다.except。즉, 이 몇 가지 역할 을 역외 에서 이 명령 을 사용 하면 Nginx 가 잘못 보고 한 다 는 것 이다.
    이상 은 accesslog 명령 의 기본 문법 과 매개 변수의 의미.다음은 몇 가지 예 를 보고 이 해 를 깊이 있 게 합 시다.
    기본 용법
    access_log /var/logs/nginx-access.log

    이 예 는 로그 의 기록 경 로 를 / var / logs / nginx - access. log 로 지정 합 니 다. 로그 형식 은 기본 combined 를 사용 합 니 다.
    access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

    이 예 는 로그 의 기록 경 로 를 / var / logs / nginx - access. log 로 지정 합 니 다. 로그 형식 은 기본 combined 를 사용 합 니 다. 지정 한 로그 의 캐 시 크기 는 32k 입 니 다. 로 그 를 쓰기 전에 gzip 를 사용 하여 압축 합 니 다. 기본 값 1 을 사용 하 는 것 보다 압축 합 니 다. 캐 시 데이터 의 유효 시간 은 1 분 입 니 다.
    log 사용format 사용자 정의 로그 형식
    Nginx 는 combined 로그 형식 을 미리 정 의 했 습 니 다. 지정 한 로그 형식 이 없 으 면 기본적으로 이 형식 을 사용 합 니 다.
    log_format combined '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $body_bytes_sent '
            '"$http_referer" "$http_user_agent"';

    Nginx 가 미리 정의 한 형식 을 사용 하지 않 으 려 면 log 를 통 해format 명령 으로 사용자 정의 합 니 다.
    문법
    log_format name [escape=default|json] string ...;
  • name 형식 이름 입 니 다.accesslog 명령 에서 참조.
  • escape 설정 변수 에 있 는 문자 인 코딩 방식 은 json 인지 default 인지 기본 값 은 default 입 니 다.
  • string 이 정의 할 로그 형식 내용 입 니 다.이 매개 변 수 는 여러 개 있 을 수 있다.인자 에서 Nginx 변 수 를 사용 할 수 있 습 니 다.

  • 다음은 logformat 명령 에서 자주 사용 하 는 변수:
    $bytes_sent
               
    
    $body_bytes_sent
              ,         
    
    $connection
         
    
    $connection_requests
                 
    
    $msec
          ,    ,     
    
    $pipe
           http     ,    "p",   “."
    
    $request_length
       (     ,       )
    
    $request_time
          ,    ,     ,              ,                       
    
    $status
         
    
    $time_iso8601
             ,  “2017-05-24T18:31:27+08:00”
    
    $time_local
                , "24/May/2017:18:31:27 +0800"
    
    $http_referer
       referer  。
    
    $http_user_agent
            。
    
    $remote_addr
       IP
    
    $http_x_forwarded_for
              ,  web            ,                     x_forwarded_for  。
    
    $request
            ,  "GET / HTTP/1.1"
    
    $remote_user
           ,            
    
    $request_uri
           ,  "https://daojia.com/"

    사용자 정의 로그 형식의 사용 을 보 여 줍 니 다:
    access_log /var/logs/nginx-access.log
       mainlog_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
        '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"';

    우 리 는 log 를 사용한다format 명령 은 main 형식 을 정의 하고 accesslog 명령 에서 그것 을 인용 했다.만약 클 라 이언 트 가 요청 을 한다 면 https://suyunfe.com/ 제 가 캡 처 한 요청 로그 기록 을 보 겠 습 니 다.
    112.195.209.90 - - [20/Feb/2018:12:12:14 +0800] "GET / HTTP/1.1" 200 190 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36" "-"

    우 리 는 최종 로그 기록 $remote_user, $http_referer, $http_x_forwarded_for 이 모두 하나의 - 에 대응 하 는 것 을 보 았 다. 이것 은 이 몇 개의 변수 가 비어 있 기 때문이다.
    설정 errorlog
    오류 로 그 는 Nginx 에서 error 를 통 해log 명령 이 실 현 됐 습 니 다.이 명령 은 서버 와 요청 처리 과정 에서 의 오류 정 보 를 기록 합 니 다.
    문법
    오류 로그 파일 의 경로 와 로그 단 계 를 설정 합 니 다.
    error_log file [level];
    Default: 
    error_log logs/error.log error;

    첫 번 째 매개 변 수 는 로그 의 기록 위 치 를 지정 합 니 다.
    두 번 째 매개 변 수 는 로그 의 단 계 를 지정 합 니 다.level 은 debug, info, notice, warn, error, crit, alert, emerg 의 임 의 값 일 수 있 습 니 다.그 수치 범 위 는 긴급 정도 에 따라 낮은 것 에서 높 은 것 으로 배열 되 어 있 음 을 알 수 있다.로그 의 오류 단계 가 level 에서 지정 한 값 과 같 거나 높 아야 오류 로그 에 기록 할 수 있 습 니 다.기본 값 은 error 입 니 다.
    기본 용법
    error_log /var/logs/nginx/nginx-error.log

    main, http, mail, stream, server, location 역할 영역 에 설정 할 수 있 습 니 다.
    예 에서 오류 로그 의 경 로 를 지정 하 였 습 니 다. /var/logs/nginx/nginx-error.log 로그 단 계 는 기본 error 를 사용 합 니 다.
    open_log_file_cache
    모든 로그 기록 의 기록 은 파일 을 열 고 기록 을 쓴 다음 로그 파일 을 닫 습 니 다.로그 파일 경로 에 변 수 를 사용 했다 면 access_log /var/logs/$host/nginx-access.log 성능 을 향상 시 키 기 위해 open 을 사용 할 수 있 습 니 다.log_file_cache 명령 은 로그 파일 설명자 의 캐 시 를 설정 합 니 다.
    문법
    open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  • max 는 캐 시 에 가장 많이 들 어 가 는 파일 설명자 수 를 설정 합 니 다. 가득 차 면 LRU 알고리즘 을 사용 하여 설명 자 를 닫 습 니 다.
  • inactive 는 캐 시 생존 시간 을 설정 하고 기본 값 은 10s 입 니 다.
  • min_uses 는 inactive 시간 대 에 로그 파일 을 최소 몇 번 사용 합 니 다. 이 로그 파일 설명 자 는 캐 시 에 기록 합 니 다. 기본 값 은 1 회 입 니 다.
  • valid: 로그 파일 이름 을 얼마나 설정 하 는 지 확인 하고 변화 가 있 는 지 확인 합 니 다. 기본 값 은 60s 입 니 다.
  • off: 캐 시 를 사용 하지 않 습 니 다.기본 값 은 off 입 니 다.

  • 기본 용법
    open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

    http, server, location 역할 영역 에 설정 할 수 있 습 니 다.
    예 를 들 어 캐 시 최대 1000 개의 로그 파일 설명 자 를 설정 합 니 다. 20s 내 에 캐 시 에 있 는 로그 파일 설명자 가 최소 2 번 방문 해 야 캐 시 에서 닫 히 지 않 습 니 다.캐 시 에 있 는 파일 설명자 의 파일 이름 이 존재 하 는 지 1 분 간격 으로 확인 합 니 다.
    총결산
    Nginx 중 accesslog 와 errorlog 명령 은 로그 와 오류 로 그 를 설정 합 니 다. log 를 통 해format 로그 형식 을 사용자 정의 할 수 있 습 니 다.로그 파일 경로 에 변 수 를 사용 하면 open 을 통 해log_file_cache 명령 으로 캐 시 를 설정 하여 성능 을 향상 시 킵 니 다.
    그리고 accesslog 와 logformat 에서 많은 변 수 를 사 용 했 습 니 다. 이 변 수 는 일일이 열거 되 지 않 았 습 니 다. 상세 한 변수 정 보 는 Nginx 공식 문 서 를 참고 할 수 있 습 니 다. http://nginx.org/en/docs/vari...
    저자: antwang
    juejin.im/post/5aa09bb3f265da238f121b6c

    좋은 웹페이지 즐겨찾기