Nginx는 인터넷에서 가장 큰 일부 사이트의 로드를 처리하는 오픈 소스 고성능 HTTP 및 역방향 프록시 서버입니다. NGINX 웹 서버를 관리할 때 수행하는 가장 일반적인 작업 중 하나는 로그 파일을 확인하는 것입니다.
로그를 구성하고 읽는 방법을 아는 것은 자세한 디버깅 정보를 제공하므로 서버 또는 애플리케이션 문제를 해결할 때 매우 유용합니다.
Nginx는 이벤트를 기록하기 위해 액세스 로그와 오류 로그라는 두 가지 유형의 로그를 사용합니다. 액세스 로깅은 클라이언트 요청에 대한 정보를 기록하고, 오류 로깅은 서버 및 애플리케이션 문제에 대한 정보를 기록합니다.
Nginx는 고객 요청이 처리될 때마다 액세스 로그에 새 기록을 생성합니다. 각 이벤트 레코드에는 타임스탬프가 포함되어 있으며 클라이언트 및 요청된 리소스에 대한 다양한 정보가 포함되어 있습니다. 접속 로그에는 방문자의 위치, 방문자가 방문한 페이지 등이 표시될 수 있습니다.
log_format
지시문을 사용하면 로깅 형식을 정의할 수 있습니다. access_log
지시문은 로그 파일의 위치와 형식을 활성화하고 설정합니다. log_format
指令允许你定义记录日志的格式。 access_log
指令启用并设置日志文件的位置和使用的格式。
access_log
指令的最基本语法如下:
access_log log_file log_format;
其中 log_file
是日志文件的完整路径, log_format
是日志文件使用的格式。可以在 http
, server
或 location
指令的上下文中启用访问日志。
默认情况下,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
格式,在 http
或 server
中添加以下定义指令:
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
指令启用并设置错误日志的位置和严重性级别。它采用以下格式,可以在 http
, server
或 location
上下文中进行设置:
error_log log_file log_level
log_level
参数设置日志记录级别。以下是按严重性从低到高列出的级别:
debug info notice warn error crit alert emerg
每个日志级别包括更高级别。例如,如果你将日志级别设置为 warn
,则Nginx还将记录 error
, crit
, alert
和 emerg
消息。未指定 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
目录中。
你可以使用 cat
, less
, grep
, cut
, awk
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
, alert
및 emerg
메시지. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!