Предотвращение заполнения журнала доступа nginx статическими запросами

Бесполезные запросы GET для favicon.ico и ресурсов в моей папке / static / засоряют мой журнал доступа к nginx. И это' sa занят сервер - это означает, что ввод-вывод тоже тратится впустую Не говоря уже о том, что моя установка fail2ban иногда принимает искаженные решения!

Как мне исключить эти мешающие строки журнала? Я использую nginx 1.4.x .

Я нашел способ сделать это в apache , но не в nginx.


Вот мой файл виртуального хоста nginx:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=6m;

upstream my_server {

  server unix:/home/myuser/myfolder/myapp/myapp.sock  fail_timeout=0;
}

server {
    server_name example.com www.example.com;

    listen 80;

    return 301 https://example.com$request_uri;
}

server {
    server_name www.example.com;

    listen 443 ssl;
    listen [::]:443 ssl;

    . . . SSL related stuff . . .   

    . . . adding security related headers . . .

    return 301 https://example.com$request_uri;
}



server {

    server_name example.com;
    listen 443 ssl;
    listen [::]:443 ssl;

    . . . SSL related stuff . . .

    . . . adding security related headers . . .

    charset utf-8;
    underscores_in_headers on;

    limit_conn conn_limit_per_ip 10;
    limit_req zone=req_limit_per_ip burst=20;

    # write error log file for https errors:
    error_log /var/log/nginx/https-error_log warn;


    location ~* \.(?:ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ { 

    root /home/myuser/myfolder/myapp; 
    access_log off;
    expires 120d;
    add_header Pragma public;
    add_header Cache-Control public;

    }

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {

    access_log off;
        alias /home/myuser/myfolder/myapp;
    }

    location /status {
        stub_status on;
        allow 127.0.0.1;
        allow 40.114.247.165;
        deny all;
    }




    location / {

        #proxy_pass_request_headers on;
        proxy_buffering on;
        proxy_buffers 24 4k;
        proxy_buffer_size 2k;
        proxy_busy_buffers_size 8k;

        try_files $uri @https_proxy_to_app;
    }

    location @https_proxy_to_app {
        proxy_set_header X-Forwarded-Proto https;
        # additional proxy parameters
        include proxy_params;

        proxy_redirect off;
        proxy_pass http://my_server;
    }


    # Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/myuser/myfolder/myapp/templates/;
    }

    location = /backflip.png {
        root /home/myuser/myfolder/myapp/static/img/;
    }

}

В nginx.conf я определил следующее в блоке http :

log_format compression '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /var/log/nginx/access.log compression;

И вот пример того, что я В журналах доступа я вижу:

192.16.53.127 - - [24/Sep/2017:01:12:24 +0000] "GET /static/emoticons/puke1.png HTTP/1.1" 301 178 "https://example.com/page2/" "service-1460643764266048;Mozilla/5.0 (Linux; Android 6.0; QMobile X32 Power Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36" "-"

152.195.94.170 - - [24/Sep/2017:01:12:24 +0000] "GET /static/img/favicon-192.png HTTP/1.1" 301 178 "https://example.com/comment/3" "Opera/9.80 (Android; Opera /24.0.2254/69.162; U; en) Presto/2.12.423 Version/12.16" "-"
2
задан 24 September 2017 в 04:27
2 ответа

كل كتلة خادم تُنشئ سجلات وكل كتلة تُنشئ سجلات. لا يمكنك فقط إضافة كتلة للموقع إلى تكوين موجود وتتوقع أن تعمل دون النظر في كيفية تفاعلها مع جميع كتل الموقع الأخرى في التكوين. انظر كيف يعالج nginx طلبًا لمزيد من المعلومات.

قد يكون الحل البسيط لمشكلتك هو استخدام قاعدة عامة لتحديد ما إذا كان يجب تسجيل الطلب أم لا.

] على سبيل المثال ، في ملف nginx.conf :

log_format compression '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

map $request_uri $loggable {
    default                                             1;
    ~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ 0;
}

access_log /var/log/nginx/access.log compression if=$loggable;

انظر هذا المستند للمزيد.

3
ответ дан 3 December 2019 в 10:34

الترقية من nginx 1.4.x إلى nginx 1.13.x (Ubuntu 14.04 LTS):

1) انتقل إلى /etc/apt/sources.list.d/ وأنشئ nginx.list عبر sudo nano nginx.list .

2) الصق هذين في سطرين منفصلين: deb http://nginx.org/packages / mainline / ubuntu / trusty nginx و deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

3) احفظ الملف واخرج منه. على الجهاز ، أدخل sudo wget -q -O- http://nginx.org/keys/nginx_signing.key | sudo apt-key add -

4) التالي sudo apt-get update

5) أخيرًا sudo apt-get install nginx . سيتم تثبيت الإصدار الأخير.


التسجيل الانتقائي: إجابة ريتشارد أفضل من إجابتي ، لذا فقد تم تصحيحها.

0
ответ дан 3 December 2019 в 10:34

Теги

Похожие вопросы