Назад | Перейти на главную страницу

Как отключить журнал доступа только для определенного URL-адреса в этой конфигурации nginx?

Это конфигурация nginx

server {
    listen $PORT;

    location ~ ^/documents/(.*)$ {
        proxy_pass http://127.0.0.1:5000/$1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

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

Есть два варианта использования URL /documents/:

Опубликовать в /documents/ для обработки или

Добраться до /documents/ping используется AWS ELB для проверки работоспособности

В журнале cloudwatch я получил кучу записей ping в результате

Как проще всего попросить nginx не регистрировать пинг?

Вот простой способ - добавить этот блок местоположения.

 location ~ /documents/ping {
    proxy_pass http://127.0.0.1:5000/$1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    access_log    off;
    log_not_found off;
}

Вероятно, есть более чистые способы. Один из них - определить совместно используемое содержимое двух блоков как файл и включить его, но для одноразового использования я бы не стал беспокоиться.

Заметка - не используйте операторы if если вы не можете с этим поделать.

Обновить

Если вы хотите включить, сделайте что-то вроде этого

location ~ ^/documents/(.*)$ {
  include /path/to/fragment.conf;
}

 location /documents/ping {
  include /path/to/fragment.conf;

  access_log    off;
  log_not_found off;
}

В файле fragment.conf

  proxy_pass http://127.0.0.1:5000/$1;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Согласитесь, что ~ не было необходимости, но я не думаю, что это повредит.