nginx rwrite 및 특정 상태 로 그 를 기록 하지 않 는 nginx 모듈 추가
5145 단어 nginx기록 되 지 않 은 로그 모듈
첫 번 째, 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.