Привет всем!
Игорь, я тут придумал такую штучку...
подсчет трафика и вывод его для каждого server {} или location {}.
Идея в том, чтобы ввести переменную, которую можно было бы вставить в необходимый server {} или location {}, а потом выводить эту статистику через /nginx_status
Это удобно тем, что позволяет динамически считать и наблюдать трафик от отдельной директории. Особенно интересно это там, где нет ведения логов: в картинках и файлах.
И не надо динамически логи парсить.
Что-то типа из формата логов $bytes_sent, только постоянно ссумируется (до обнуления).
Что-то типа подобного:
location / { proxy_pass
http://111.111.111.111:8000/; access_log /usr/local/nginx/logs/access_web.log main;
proxy_redirect off; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
traffic_count $location[1] "Main directory" }
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|swf|zip|rar|doc|xls|exe|pdf|ppt|txt|bmp|js)$ {
root /srv/www/htdocs/web1/html/obs; access_log off; expires 30d;
traffic_count $location[2] "Files" }
location ^~ /swf/ { valid_referers none server_names *.server.com/;
if ($invalid_referer) { return 403; }
root /srv/www/htdocs/web/html; autoindex on;
traffic_count $location[3] "SWF files" access_log /usr/local/nginx/logs/access_web_swffiles.log download;
}Для обнуления можно ввести глобальную переменную с форматом наподобие крона (минимальный интервал обнуления сделать не минуту, а час)
час день месяц
traffic_count_zero */3 * *обнуление каждые три часа
В статистике это выгладит примерно так (в байтах):
croesus:~# GET http://your-domain.com/nginx_status
Active connections: 1492server accepts handled requests 2124355 2124355 8278635
Reading: 6 Writing: 405 Waiting: 1081Main directory: 111111
Files: 2223334
SWF files: 8888888Или просто имена переменных выдавать, а там пусть сами разбираются
croesus:~# GET
http://your-domain.com/nginx_status
Active connections: 1492server accepts handled requests
2124355 2124355 8278635Reading: 6 Writing: 405 Waiting: 1081
location[1]: 111111location[2]: 2223334
location[3]: 8888888Еще это интересно там, где одновременно отдается "легкая" графика сайта и огромные файлы-архивы или видеофайлы, так как они качаются долго и в логи попадают не равномерно по времени.
Думаю это будет элегантным решением ;)
Что скажете?