우분투 14.04 서버에서 기본 nginx 패키지를 사용하고 있습니다. 그것은 사용하는 /etc/nginx/nginx.conf
기본 구성으로하고, 다음부터 CONFIGS 포함 /etc/nginx/conf.d/*.conf
하고 /etc/nginx/sites-enabled/*
.
기본 nginx 설정에는 액세스 로그에 로깅하기위한이 지시문이 있습니다.
access_log /var/log/nginx/access.log;
X-Forwarded-For 헤더를 추가하고 싶습니다. 그래서 conf.d
폴더 내부 에서이 작업을 수행 합니다.
log_format main '$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 main;
내가 가진 문제는 access.log 파일 내에 두 개의 레코드를 가져 오는 것입니다. 하나는 헤더 정보가 있고 다른 하나는없는 것입니다.
nginx.conf
파일 자체를 덮어 쓸 수는 있지만 가능하면 피하는 것이 좋습니다. 또한 동일한 로그 파일 ( access.log
) 을 계속 사용하고 싶습니다 .
nginx에 이전 지시문을 무시하고 기본 nginx.conf
파일 을 수정하지 않고 단순히 로그 형식을 변경하도록 지시하는 방법이 있습니까?
답변
귀하의 질문에 대한 대답은 아니오이며, nginx의 모든 수준에서 log_format을 재정의 할 수 없으며 동일한 수준에있을 때 access_log를 재정의 할 수 없습니다. 그러나 nginx.conf를 변경하지 않고 원하는 것을 얻을 수 있지만 서버 {} 수준에서 수행해야합니다.
여기서 문제는 conf.d / *의 포함이 http {} 안에 있으며, 여기서 정확히 access_log 지시문이 있습니다. nginx.conf를 건드리지 않고 할 수있는 일은 사용중인 서버를 변경하는 것입니다 {} (설정하지 않은 경우 / etc / nginx / sites-enabled / default에있는 기본 서버를 사용하고 있음). 따라서 nginx.conf를 변경하지 않고 동일하게하려면 conf.d 폴더의 파일을 다음과 같이 변경해야합니다.
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log off;
그런 다음 서버 내부에 {}
access_log /var/log/nginx/access.log main;
처음에 원하는 것을 얻을 수 있습니다.