nginx 로그 설정 및 절단

6296 단어 nginx
방문 로 그 는 클 라 이언 트 가 Nginx 에 접근 하 는 모든 요청 을 기록 합 니 다. 형식 은 사용자 정의 할 수 있 습 니 다.방문 로 그 를 통 해 사용자 의 지역 출처, 이동 출처, 터미널 사용, 특정한 URL 방 문 량 등 관련 정 보 를 얻 을 수 있 습 니 다.
Nginx 에서 로그 에 접근 하 는 명령 은 주로 두 가지 가 있 는데 하 나 는 log 입 니 다.format, 로그 의 형식 을 설정 하 는 데 사용 되 며, 다른 하 나 는 access 입 니 다.로그, 로그 문직 의 저장 경로, 형식, 캐 시 크기 를 지정 합 니 다.두 명령 이 Nginx 프로필 에 있 는 위 치 는 http 사이 에 있 습 니 다.
로그 설정
log_format
log_format 는 로그 형식 을 설정 하 는 데 사 용 됩 니 다. 형식 은 다음 과 같 습 니 다.
log_format name(  ) format(  )

Nginx 에는 다음 과 같은 기본 로그 형식 이 있 습 니 다.
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

이 내용 은 무슨 뜻 입 니까?이해 해 보 자.
  • $remote_addr: 클 라 이언 트 의 ip 주소 (중간 에 프 록 시 서버 가 있 으 면 여기 표 시 된 ip 은 프 록 시 서버 의 ip 주소)
  • $remote_user: 원 격 클 라 이언 트 를 기록 하 는 사용자 이름 (보통 "-")
  • $time_local: 방문 시간 과 시간 대 를 기록 하 는 데 사용 합 니 다
  • $request: 요청 한 url 및 요청 방법 기록
  • $status: 응답 상태 코드
  • $body_bytes_sent: 클 라 이언 트 에 게 보 낸 파일 의 주체 내용 크기
  • $http_referer: 사용자 가 어떤 링크 에서 방 문 했 는 지 기록 할 수 있 습 니 다
  • $http_user_에이전트: 사용자 가 사용 하 는 에이전트 (일반적으로 브 라 우 저)
  • $http_x_forwarded_for: 클 라 이언 트 IP 를 기록 할 수 있 고 프 록 시 서버 를 통 해 클 라 이언 트 의 ip 주 소 를 기록 할 수 있 습 니 다
  • 사용자 정의 로그 정 보 를 추가 합 니 다.예 를 들 어 우리 가 Nginx 를 역방향 프 록 시 서비스 로 사용 하면 클 라 이언 트 의 실제 IP 주소 IP 를 얻 을 수 없습니다. 역방향 프 록 시 를 거 친 후에 클 라 이언 트 와 웹 서버 사이 에 중간 층 이 추가 되 었 기 때문에 웹 서버 는 클 라 이언 트 의 IP 를 직접 받 을 수 없습니다.
    log_format mylog '$remote_addr [$time_local] "$request" $status';

    로그 형식 에 포 함 된 변수 설명 을 허용 합 니 다. 다음 과 같 습 니 다.
    $remote_addr, $http_x_forwarded_for      IP  
    $remote_user          
    $request      URL HTTP  
    $status       
    $body_bytes_sent           ,         ;     Apache  mod_log_config  “%B”    。
    $bytes_sent            。
    $connection       。
    $connection_requests                。
    $msec       。    ,     。
    $pipe        HTTP   (pipelined)  ,pipe  “p”,   “.”。
    $http_referer               
    $http_user_agent             
    $request_length      (     ,        )。
    $request_time       ,    ,    ;               ,                        。
    $time_iso8601 ISO8601          。
    $time_local             。

    access_log
    log 로format 명령 이 로그 형식 을 설정 한 후 access로그 명령 은 로그 파일 저장 경 로 를 지정 합 니 다.
    양식 은 아래 와 같다.
    access_log path(    ) [format(         ) [buffer=size | off]]

    Nginx 에 기본 로그 경로 가 있 습 니 다. 다음 과 같 습 니 다.
    #access_log  logs/access.log  main;

    로 그 를 닫 으 려 면 다음 과 같 습 니 다.
    access_log off;

    주의해 야 할 것 은 Nginx 프로 세 스 가 설정 한 사용자 와 그룹 은 로그 경로 에 파일 을 만 들 수 있 는 권한 이 있어 야 합 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.
    또한, 모든 로그 기록 에 대해 서 는 파일 을 먼저 열 고 로 그 를 기록 한 다음 닫 습 니 다.오픈 사용 가능log_file_cache 에서 로그 파일 캐 시 를 설정 합 니 다 (기본 값 은 off).
    로그 절단
    사이트 방문 이 많 으 면 로그 데이터 가 많 습 니 다. 로그 파일 에 모두 쓰 면 파일 이 점점 커 집 니 다.파일 의 큰 속도 가 느 려 질 것 이다. 예 를 들 어 하나의 파일 이 수백 메 가 이다.로 그 를 쓸 때 작업 속도 에 영향 을 줍 니 다.또한 방문 로 그 를 보고 싶다 면 수백 조 의 파일 을 다운로드 해서 열 어도 느리다.
    로 그 를 분석 하고 계산 하 는 데 편리 하도록 로 그 를 정기 적 으로 절단 해 야 한다.정시 에 절단 하 는 방식 은 달 에 따라 절단 하고 날 에 따라 절단 하 며 시간 에 따라 절단 하 는 등 이 있다.가장 자주 사용 하 는 것 은 하늘 에 따라 자 르 는 것 이다.
    셸 스 크 립 트 설정
    #!/bin/bash
    #           
    logs_path="/var/logs/nginx/"
    #   pid  
    pid_path="/usr/local/dev/nginx/nginx.pid"
    #        
    mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
    #  nginx            
    kill -USR1 `cat ${pid_path}`

    crontab 에서 정시 작업 설정
    편집 을 진행 하 다
    crontab -e

    설정 내용 은 다음 과 같 습 니 다.
    0 0 * * * bash /usr/local/dev/nginx/nginx_log.sh

    이렇게 하면 매일 밤 12 시 에 자동 으로 백업 파일 을 만 들 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기