Nginx 액세스 및 오류 로그를 구성하는 방법

WBOY
풀어 주다: 2023-05-16 08:10:05
앞으로
1856명이 탐색했습니다.

Nginx는 인터넷에서 가장 큰 일부 사이트의 로드를 처리하는 오픈 소스 고성능 HTTP 및 역방향 프록시 서버입니다. NGINX 웹 서버를 관리할 때 수행하는 가장 일반적인 작업 중 하나는 로그 파일을 확인하는 것입니다.

로그를 구성하고 읽는 방법을 아는 것은 자세한 디버깅 정보를 제공하므로 서버 또는 애플리케이션 문제를 해결할 때 매우 유용합니다.

Nginx는 이벤트를 기록하기 위해 액세스 로그와 오류 로그라는 두 가지 유형의 로그를 사용합니다. 액세스 로깅은 클라이언트 요청에 대한 정보를 기록하고, 오류 로깅은 서버 및 애플리케이션 문제에 대한 정보를 기록합니다.

Nginx 액세스 로그 구성

Nginx는 고객 요청이 처리될 때마다 액세스 로그에 새 기록을 생성합니다. 각 이벤트 레코드에는 타임스탬프가 포함되어 있으며 클라이언트 및 요청된 리소스에 대한 다양한 정보가 포함되어 있습니다. 접속 로그에는 방문자의 위치, 방문자가 방문한 페이지 등이 표시될 수 있습니다.

log_format 지시문을 사용하면 로깅 형식을 정의할 수 있습니다. access_log 지시문은 로그 파일의 위치와 형식을 활성화하고 설정합니다. log_format 指令允许你定义记录日志的格式。 access_log 指令启用并设置日志文件的位置和使用的格式。

access_log 指令的最基本语法如下:

access_log log_file log_format;
로그인 후 복사

其中 log_file 是日志文件的完整路径, log_format 是日志文件使用的格式。可以在 httpserverlocation 指令的上下文中启用访问日志。

默认情况下,Nginx主配置文件中的 http 指令配置了全局访问日志格式。

http {
  ...
  access_log  /var/log/nginx/access.log;
  ...
}
로그인 후 복사

/etc/nginx/nginx.conf

为获得更好的可维护性,建议为每个服务器设置一个单独的访问日志文件。在 server 指令中设置的 access_log 指令将覆盖在 http 指令中设置的 access_log

http {
  ...
  access_log  /var/log/nginx/access.log;
  ...
  server {
    server_name domain.com
    access_log  /var/log/nginx/domain.access.log;
    ...
  }
}
로그인 후 복사

/etc/nginx/conf.d/domain.com.conf

如果未指定日志格式,Nginx将使用预定义的combined组合格式,如下所示:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
로그인 후 복사

要更改日志记录格式,请覆盖默认设置或定义一个新设置。例如,定义一个名为 main 的新日志记录格式,它将用添加 X-Forwarded-For header的值来扩展 combined 格式,在 httpserver 中添加以下定义指令:

log_format  custom  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
로그인 후 복사

要使用新日志格式,请在日志文件后指定其名称,如下所示:

access_log  /var/log/nginx/access.log custom;
로그인 후 복사

虽然访问日志提供了非常有用的信息。但它会占用磁盘空间,并可能影响服务器性能。如果服务器资源不足,并且网站繁忙,则可能要禁用访问日志。为此,请将 access_log 伪指令的值设置为 off 。理论上你不会出现这种情况,Nginx会自动删除前期的日志文件:

access_log off;
로그인 후 복사

配置错误日志

Nginx将应用程序和常规服务器错误的消息写入错误日志文件。如果你在Web应用程序中遇到错误,则错误日志是你开始进行排查问题的第一个位置。 error_log 指令启用并设置错误日志的位置和严重性级别。它采用以下格式,可以在 httpserverlocation 上下文中进行设置:

error_log log_file log_level
로그인 후 복사

log_level 参数设置日志记录级别。以下是按严重性从低到高列出的级别:

debug
info
notice
warn
error
crit
alert
emerg
로그인 후 복사

每个日志级别包括更高级别。例如,如果你将日志级别设置为 warn ,则Nginx还将记录 errorcritalertemerg 消息。未指定 log_level 参数时,默认为 error 。默认情况下, error_log 指令在主nginx.conf文件内的 http 指令上下文中定义:

http {
  ...
  error_log  /var/log/nginx/error.log;
  ...
}
로그인 후 복사

/etc/nginx/nginx.conf与访问日志相同,建议为每个服务器设置一个单独的错误日志文件,该文件将覆盖更高级别的设置如http指令上下文。例如,要将domain.com的错误日志设置为 warn ,你可以使用:

http {
  ...
  error_log  /var/log/nginx/error.log;
  ...

  server {
    server_name domain.com
    error_log  /var/log/nginx/domain.error.log warn;
    ...
  }
}
로그인 후 복사

无论何时修改配置文件,都必须重新加载Nginx服务,以使更改生效。

日志文件的位置

在大多数Linux发行版中,例如Ubuntu ,CentOS和Debian。默认情况下,访问和错误日志位于 /var/log/nginx 目录中。

读取和理解Nginx日志文件

你可以使用 catlessgrepcutawk

access_log 지시어의 가장 기본적인 구문은 다음과 같습니다: 🎜
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
로그인 후 복사
로그인 후 복사
🎜여기서 log_file은 로그 파일의 전체 경로이고 log_format</code >는 로그 파일에 사용되는 형식입니다. 액세스 로깅은 <code>http , server 또는 location 지시문의 컨텍스트에서 활성화할 수 있습니다. 🎜🎜기본적으로 Nginx 기본 구성 파일의 http 지시문은 전역 액세스 로그 형식을 구성합니다. 🎜rrreee🎜/etc/nginx/nginx.conf🎜🎜더 나은 유지 관리를 위해 각 서버마다 별도의 액세스 로그 파일을 설정하는 것이 좋습니다. server 지시문에 설정된 access_log 지시문은 http 지시문에 설정된 access_log를 덮어씁니다. 🎜rrreee🎜/etc/nginx/conf.d/domain.com.conf🎜🎜로그 형식이 지정되지 않은 경우 Nginx는 다음과 같이 사전 정의된 결합 형식을 사용합니다. 🎜rrreee🎜로깅 형식을 변경하려면 기본 설정을 재정의하거나 정의 새로운 설정. 예를 들어 X-Forwarded-For 헤더 값을 추가하여 combined 형식을 확장하는 main이라는 새 로깅 형식을 정의합니다. http 또는 server에 다음 정의 지시어를 추가하세요. 🎜rrreee🎜새 로그 형식을 사용하려면 다음과 같이 로그 파일 뒤에 해당 이름을 지정하세요. 🎜rrreee🎜 로그는 매우 유용한 정보를 제공합니다. 그러나 디스크 공간을 차지하고 서버 성능에 영향을 미칠 수 있습니다. 서버의 리소스가 부족하고 사이트가 바쁜 경우 액세스 로그를 비활성화할 수 있습니다. 이렇게 하려면 access_log 지시문의 값을 off 로 설정하세요. 이론적으로 이러한 상황은 발생하지 않으며 Nginx는 이전 로그 파일을 자동으로 삭제합니다. 🎜rrreee🎜구성 오류 로그🎜🎜Nginx는 응용 프로그램 및 일반 서버 오류 메시지를 오류 로그 파일에 기록합니다. 웹 애플리케이션에서 오류가 발생하면 오류 로그가 문제 해결을 시작하는 첫 번째 장소입니다. error_log 지시어는 오류 로그의 위치와 심각도 수준을 활성화하고 설정합니다. 다음 형식을 사용하며 http , server 또는 location 컨텍스트에서 설정할 수 있습니다: 🎜rrreee🎜log_level 매개변수 로깅 수준을 설정합니다. 심각도가 낮은 것부터 높은 것까지 나열된 수준은 다음과 같습니다. 🎜rrreee🎜 각 로그 수준에는 더 높은 수준이 포함됩니다. 예를 들어 로그 수준을 warn 으로 설정하면 Nginx는 error , crit , alertemerg 메시지. log_level 매개변수가 지정되지 않은 경우 기본값은 error입니다. 기본적으로 error_log 지시문은 기본 nginx.conf 파일 내 http 지시문의 컨텍스트에서 정의됩니다. 🎜rrreee🎜/etc/nginx/nginx.conf는 액세스 로그와 마찬가지로 각 서버에 대해 별도의 오류 로그 파일을 설정하는 것이 좋습니다. 이는 http 지시문 컨텍스트와 같은 상위 수준 설정을 무시합니다. 예를 들어 domain.com의 오류 로그를 warn 으로 설정하려면 다음을 사용합니다. 🎜rrreee🎜 구성 파일을 수정할 때마다 변경 사항을 적용하려면 Nginx 서비스를 다시 로드해야 합니다. 🎜🎜Ubuntu, CentOS 및 Debian과 같은 대부분의 Linux 배포판에서 로그 파일의 위치 🎜🎜. 기본적으로 액세스 및 오류 로그는 /var/log/nginx 디렉터리에 있습니다. 🎜🎜Nginx 로그 파일을 읽고 이해하세요🎜🎜 cat, less, grep, cut, <를 사용할 수 있습니다. code>awk 및 기타 명령은 nginx 로그 파일을 열고 구문 분석합니다. 다음은 기본 Nginx 로그 형식을 사용한 접속 로그 파일의 기록입니다. 🎜
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
로그인 후 복사
로그인 후 복사

让我们细分Nginx日志文件记录的每个字段意味着什么:

  • $remote_addr – 192.168.33.1 -发出请求的客户端的IP地址。

  • $remote_user  – - -HTTP身份验证用户。未设置用户名时,此字段显示 - 。

  • [$time_local] – [15/Oct/2019:19:41:46 +0000]

本地服务器时间。

  • "$request"  – "GET / HTTP/1.1" -请求类型,路径和协议。

  • $status  – 200 -服务器响应代码。

  • $body_bytes_sent  – 396 -服务器响应的大小(以字节为单位)。

  • "$http_referer"  – "-" -引荐网址。

  • "$http_user_agent"  – Mozilla/5.0 ... -客户端的用户代理(网络浏览器)。

使用 tail 命令实时观看日志文件记录: tail -f access.log

위 내용은 Nginx 액세스 및 오류 로그를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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