2017-01-11 3 views
0

При включении stub_status в Nginx, статистические данные о сервере могут быть запрошены:Nginx stub_status: Игнорировать собственные запросы

location /stats { 
    stub_status on; 
    access_log off; 
    allow 127.0.0.1; 
    deny all; 
} 

Я заинтересован в «запросов, обрабатываемых» Метрика. Проблема в том, что эта метрика включает запросы, отправленные для запроса текущего состояния.

Есть ли способ игнорировать запросы от /stats в данных?

+0

@IvanTsirulev благодарит за сообщение! если вы напишете это как ответ, я могу принять его :) –

ответ

1

Как вы можете видеть в source code, счетчик увеличивается точно в тот момент, когда создается новый объект «объект». То есть, даже до того, как будет обработан любой заголовок запроса, включая URI. Так что ответа нет, к сожалению, нет способа сказать Nginx не считать запросы на определенный URI.

Однако есть два пути решения проблемы. К сожалению, оба они связаны создать свой собственный экземпляр Nginx:

  1. Вы можете пропатчить stub status module Nginx непосредственно, декремент запроса контера каждый раз, когда stub_status директива формирует выходной сигнал. Для этого вам нужно включить только this line в конце this function.

  2. Другим более правильным способом является представление собственного модуля, который будет делать то же самое. Вот быстро сделанный example такого модуля. Несколько удивительно, но вам не нужны сильные знания C для создания простых модулей, поскольку Nginx предлагает свои собственные рамки для этого, а также есть сотни примеров, доступных на GitHub.

Смежные вопросы