詳細検索

nginx가 건강 상태 확인을 위한 접근 로그를 출력하지 못하게 하세요

아바타
글쓴이 miyashitak
3분 읽기

nginx가 건강 상태 확인을 위한 접근 로그를 출력하지 못하게 하세요
日本語에서 번역 • 원문 보기

좋은 아침입니다. 이쪽은 인프라의 미야시타입니다.
이번에는 nginx의 로그 관련 설정이 될 예정입니다.


목차

  1. 서론
  2. ngx_http_geo_module에 대해서요
  3. nginx 설정
  4. 참고 사이트

서론

nginx에서 특정 NW에서 로그를 출력하지 않는 설정을 setenv의 정의를 사용해 구현하고 싶었는데, setenv는 apache에서 자주 구현되지만 같은 기능이 없어서 찾아봤습니다. 사용법으로는, 로그를 출력하지 않아도 되는 상황, 예를 들어 부하 분산기 상태 확인이나 모니터링 서버와의 연결 같은 경우에 사용할 수 있습니다. 분석에 필수는 아니며, 불필요한 DISK I/O도 줄여줍니다.

ngx_http_geo_module

공식 문서

문서에 설명된 대로 IP 주소를 변수로 설정할 수 있습니다.
특정 국가의 NW가 연결을 거부할 때 일반적으로 사용됩니다. 이런 경우에는 대량으로 등록된 별도의 파일로 관리할 수도 있습니다.

nginx 설정 중

nginx.conf.
[shell]# vi nginx.conf http { include mime.types; # not access_log\ IP의 지리 $no_log {기본 0; 172.0.1.0/24 1; } 서버 {(생략) 위치 / { root /var/www/html; index index.cgi index.php index.html index.htm; if ($no_log) { access_log off; } } [/shell]

기본 문법은 geo [$address] $variable { ... }입니다. "기본값"은 조건에 포함되지 않은 모든 것에 대해 "0"이며, 지정된 IP는 "1"입니다. 만약 ($variable) {access_log off; } 가 제한하려는 계층 구조의 위치에 작성되어 있고, () {access\ off; } "1"을 쓰면 "1"에 해당하는 로그가 출력되지 않습니다.

마지막으로, nginx를 다시 시작하세요.

[shell]# /etc/init.d/nginx 재시작[/shell]
이제 access_log 172.0.1.0/24의 연결 로그가 더 이상 표시되지 않습니다.
Apache처럼 Serenv로도 가능해 보이지만, enginx가 더 쉬웠습니다.

참고 사이트

NGX_http_geo_module 모듈 NGINX의 지오 모듈은 너무 편리합니다

Related Articles