Привет всем!<br>Игорь, я тут придумал такую штучку...<br>подсчет трафика и вывод его для каждого server {} или location {}.<br>Идея в том, чтобы ввести переменную, которую можно было бы вставить в необходимый&nbsp; server {} или location {}, а потом выводить эту статистику через /nginx_status
<br>Это удобно тем, что позволяет динамически считать и наблюдать трафик от отдельной директории. Особенно интересно это там, где нет ведения логов: в картинках и файлах.<br>И не надо динамически логи парсить. <br>Что-то типа из формата логов $bytes_sent, только постоянно ссумируется (до обнуления).
<br>Что-то типа подобного:<br><br><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; location / {</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_pass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://111.111.111.111:8000/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

http://111.111.111.111:8000/</a>;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; access_log&nbsp; /usr/local/nginx/logs/access_web.log&nbsp; main;</span><br style="font-style: italic;"><span style="font-style: italic;">

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_redirect&nbsp;&nbsp;&nbsp;&nbsp; off;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; proxy_set_header&nbsp;&nbsp; Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $host;</span><br style="font-style: italic;"><span style="font-style: italic;">

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_set_header&nbsp;&nbsp; X-Real-IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $remote_addr;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_set_header&nbsp;&nbsp; X-Forwarded-For&nbsp; $proxy_add_x_forwarded_for;</span><br style="font-style: italic;">

<span style="font-weight: bold; font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; traffic_count $location[1] &quot;Main directory&quot;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; }</span><br style="font-style: italic;">

<br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|swf|zip|rar|doc|xls|exe|pdf|ppt|txt|bmp|js)$ {</span><br style="font-style: italic;"><span style="font-style: italic;">

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; root&nbsp;&nbsp; /srv/www/htdocs/web1/html/obs;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; access_log&nbsp;&nbsp; off;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; expires&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30d;
</span><br style="font-style: italic;"><span style="font-weight: bold; font-style: italic;">&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; traffic_count $location[2] &quot;Files&quot;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; }
</span><br style="font-style: italic;"><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; location ^~ /swf/ {</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valid_referers&nbsp; none&nbsp; server_names&nbsp; *.server.com/;
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($invalid_referer) {</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; 403;&nbsp;&nbsp;&nbsp;&nbsp; }</span>

<br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; root&nbsp;&nbsp; /srv/www/htdocs/web/html;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; autoindex&nbsp;&nbsp;&nbsp; on;</span><br style="font-style: italic;">

<span style="font-weight: bold; font-style: italic;">&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; traffic_count $location[3] &quot;SWF files&quot;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; access_log&nbsp;&nbsp; /usr/local/nginx/logs/access_web_swffiles.log&nbsp;&nbsp; download;
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; }</span><br><br><br><br>Для обнуления можно ввести глобальную переменную с форматом наподобие крона (минимальный интервал обнуления сделать не минуту, а час)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; час день месяц<br><span style="font-weight: bold; font-style: italic;">&nbsp;&nbsp;  &nbsp; traffic_count_zero&nbsp;&nbsp; */3 &nbsp;&nbsp; * &nbsp; *</span><br>обнуление каждые три часа<br><br><br>В статистике это выгладит примерно так (в байтах):
<br><br style="font-style: italic;"><span style="font-style: italic;">croesus:~# GET <a href="http://your-domain.com/nginx_status" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://your-domain.com/nginx_status
</a></span><br style="font-style: italic;"><span style="font-style: italic;">
Active connections: 1492</span><br style="font-style: italic;"><span style="font-style: italic;">server accepts handled requests</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;2124355 2124355 8278635
</span><br style="font-style: italic;"><span style="font-style: italic;">Reading: 6 Writing: 405 Waiting: 1081</span><br style="font-style: italic;"><span style="font-style: italic; font-weight: bold;">Main directory: 111111
</span><br style="font-style: italic; font-weight: bold;"><span style="font-style: italic; font-weight: bold;">Files: 2223334</span><br style="font-style: italic; font-weight: bold;"><span style="font-style: italic; font-weight: bold;">

SWF files: 8888888</span><br><br><br>Или просто имена переменных выдавать, а там пусть сами разбираются<br><br><span style="font-style: italic;">croesus:~# GET <a href="http://your-domain.com/nginx_status" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://your-domain.com/nginx_status
</a></span><br style="font-style: italic;"><span style="font-style: italic;">Active connections: 1492</span><br style="font-style: italic;"><span style="font-style: italic;">server accepts handled requests</span><br style="font-style: italic;">

<span style="font-style: italic;">&nbsp;2124355 2124355 8278635</span><br style="font-style: italic;"><span style="font-style: italic;">Reading: 6 Writing: 405 Waiting: 1081</span><br style="font-style: italic;"><span style="font-style: italic; font-weight: bold;">

location[1]: 111111</span><br style="font-style: italic; font-weight: bold;"><span style="font-style: italic; font-weight: bold;">location[2]: 2223334</span><br style="font-style: italic; font-weight: bold;"><span style="font-style: italic; font-weight: bold;">

location[3]: 8888888</span><br style="font-style: italic;"><br>Еще это интересно там, где одновременно отдается &quot;легкая&quot; графика сайта и огромные файлы-архивы или видеофайлы, так как они качаются долго и в логи попадают не равномерно по времени.
<br><br>Думаю это будет элегантным решением ;)<br><br>Что скажете?<br>