nginx rwrite 및 특정 상태 로 그 를 기록 하지 않 는 nginx 모듈 추가

필요: log. ccl. com / q. gif 에 접근 하 였 으 며, 기타 경 로 는 404 로 돌아 가 며, 404 로 그 를 기록 하지 않 습 니 다.
첫 번 째, nginx rewrite 설정
1. nginx 재 작성 설정
server {
    listen       8000;
    server_name log.ckl.com;
    #index q.gif;
    root /app/data/qm_log;
    
#  url  q.gif,   404
    if ($uri !~ ^/q.gif) {
        return 404;
    }
    location ~* .*\.(jpg|jpeg|gif|png|bmp)$ {
        expires 30d;
        break;
    }
    error_log /app/data/log/nginx/www.error.log;
}

2. nginx 다시 시작
/etc/init.d/nginx restart

3. 테스트 접근
올 바른 경로 에 접근
curl http://log.ckl.com/q.gif

로그:
192.168.1.11 - - [31/May/2016:13:56:47 +0800] "GET /q.gif HTTP/1.1" 200 43 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36" - 968 1464674207.162 7 0.000
192.168.1.11 - - [31/May/2016:13:56:47 +0800] "GET /q.gif HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36" - 1048 1464674207.736 8 0.000

접근 오류 경로:
curl http://log.ckl.com/c.gif

로그:
192.168.1.11 - - [31/May/2016:13:48:33 +0800] "GET / HTTP/1.1" 404 564 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36" - 1068 1464673713.147 8 0.000

두 번 째 단계, nginx 404 로 그 를 기록 하지 않 습 니 다.
1. 모듈 다운로드
주소:https://github.com/cfsego/ngx_log_if
2. 용법 사례:
server {
    access_log_bypass_if ($status = 400);
    access_log_bypass_if ($host ~* 'nolog.com');
    access_log_bypass_if ($uri = 'status.nginx') and;
    access_log_bypass_if ($status = 200);
}
In the case, nginx will not write access log when the status code is 400, or when the host is 'nolog.com', or when the uri is 'status.nginx' and the status code is 200.
However, if you define them both in the blocks in the father child relationship, the child block will not inherit and merge the configuration in parent block, of course. FOr example:
server {
    access_log_bypass_if ($status = 400);
    location / {
        access_log_bypass_if ($host ~* 'nolog.com');
    }
}

3. 압축 풀기 다운로드 파일
cd /tmp/soft/
unzip ngx_log_if-master.zip

4. nginx 를 다시 컴 파일 합 니 다. 컴 파일 을 덮어 쓰 지 않 습 니 다.
cd /tmp/soft/nginx-1.9.14
 ./configure  \
--prefix=/app/local/nginx \
--pid-path=/app/local/nginx \
--user=nginx \
--group=nginx \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module  \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_perl_module \
--with-mail \
--with-http_gzip_static_module \
--with-http_auth_request_module  \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-zlib=/tmp/soft/zlib-1.2.8 \
--with-stream \
--with-stream_ssl_module \
--with-pcre=/tmp/soft/pcre-8.37 \
--with-openssl=/tmp/soft/openssl-1.0.2 \
--with-libatomic \
--add-module=/tmp/soft/ngx_log_if-master
make

원본 파일 백업 및 새로 생 성 된 파일 복사:
 mv /app/local/nginx/sbin/nginx /app/local/nginx/sbin/nginx.bak
 cp ./objs/nginx /app/local/nginx/sbin/

5. 모듈 보기
# /app/local/nginx/sbin/nginx -V
nginx version: nginx/1.9.14
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.2 22 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/app/local/nginx --pid-path=/app/local/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_perl_module --with-mail --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module --with-zlib=/tmp/soft/zlib-1.2.8 --with-stream --with-stream_ssl_module --with-pcre=/tmp/soft/pcre-8.37 --with-openssl=/tmp/soft/openssl-1.0.2 --with-libatomic --add-module=/tmp/soft/ngx_log_if-master

새로운 모듈 및 적용
6. ninx 404 상태 로 그 를 기록 하지 않 음 추가
server {
    listen       8000;
    server_name log.ckl.com;
    #index q.gif;
    root /app/data/qm_log;
    access_log_bypass_if ($status = 404);
	
    if ($uri !~ ^/q.gif) {
        return 404;
    }

    location ~* .*\.(jpg|jpeg|gif|png|bmp)$ {
        expires 30d;
        break;
    }

    error_log /app/data/log/nginx/www.error.log;
}

7. nginx 프로 세 스 다시 시작
/etc/init.d/nginx restart

8. 오류 경 로 를 다시 방문 하여 404 및 기록 되 지 않 음 발견
tailf /app/data/log/nginx/access.log

좋은 웹페이지 즐겨찾기