-Dima-

Рейтинг
133
Регистрация
15.12.2010

Короче пробуйте так. Должно сработать.

map "$whitelist:$server_protocol" $logfile {
default access.log;
"0:HTTP/1.0" access.1.0.log;
"0:HTTP/1.1" access.1.1.log;
"0:HTTP/2.0" access.2.0.log;
}
...
access_log /var/log/nginx/$logfile combined;

Только для директории nginx сделайте права 777(ну или добавляйте в группу www) иначе писаться не будут.

---------- Добавлено 02.02.2017 в 12:55 ----------

Но, я бы так на постоянной основе не оставлял.

Вариант с тремя мапами лучше. Т.к. тогда можно использовать буфер для логов и уменьшить количество обращений к hdd

Mobiaaa:
Можно, даже в доке есть пример с $host в пути access_log

Да, Вы правы.

Уже поправил. То если используется буфер для логов то нельзя переменные использовать.

Dram:
задача уместить условия для трех логов в одном мапе и потом как-то передать это в сервер

Не получится. В имя логфайла пихать переменные нельзя, а if тут работает только как 0 или не 0.

Параметр if (1.7.0) включает условную запись в лог. Запрос не будет записываться в лог, если результатом вычисления условия является “0” или пустая строка.

В общем, проще трех map решения не вижу.

UPD

Хм. А может и получится. Похоже что можно использовать переменные. Но тут есть ограничения:

В пути файла можно использовать переменные (0.7.6+), но такие логи имеют некоторые ограничения:

пользователь, с правами которого работают рабочие процессы, должен иметь права на создание файлов в каталоге с такими логами;
не работает буферизация;
файл открывается для каждой записи в лог и сразу же после записи закрывается. Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов могут храниться в кэше, то при вращении логов в течение времени, заданного параметром valid директивы open_log_file_cache, запись может продолжаться в старый файл.
при каждой записи в лог проверяется существование корневого каталога для запроса — если этот каталог не существует, то лог не создаётся. Поэтому root и access_log нужно описывать на одном уровне:
server {
root /spool/vhost/data/$host;
access_log /spool/vhost/logs/$host;
...

А, ясно.

Пробуйте так:

map $status:$http_user_agent $good_useragent {
default 0;
~*503:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}
Dram:

Значит я где-то ошибаюсь, только не пойму где... Почему я тестово сам не вижу влоге ошибки с моего Яндекс браузера?

Посмотрите на пример и на то что у Вас.

Вы попутали 1 и 0. Должно быть наоборот, чтобы их исключить из лога.

Параметр if (1.7.0) включает условную запись в лог. Запрос не будет записываться в лог, если результатом вычисления условия является “0” или пустая строка.
287_08:
Смотрите через аналитику.

Кстати, по поводу Гугл Аналитики. Я наконец понял почему у меня данные из Адсенса всегда отличаются от данных из Аналитики.

В Аналитике не учитываются клики по рекламе из блоков ссылок. Так что имейте в виду.

pavel419:

Тестирую всякое, и что я вам скажу. В осле всегда реклама показывается! Ни одного пустого блока, это при том, что я им вообще не пользуюсь. А в хроме - через раз...

Пользователи ИЕ всегда лучше кликали, чем с хрома. По моим наблюдениям.

Видимо менее искушенный зритель...

Почему то есть такое ощущение, что Блоки не показываются не потому что отсекаются дешевые объявы, а потому, что они не показываются тем, кто по статистике менее вероятно нажмет на объявление. Ну или оба эти фактора работают сразу.

Кстати, у Вас ведь по идее должен CTR подняться, т.к. 30% процентов некликающих отсеялись?

NCom:
Отдельной мобильной уже нет.

Пока работает- https://www.google.com/adsense/m/

respekto, куда перешли?

sultanbey:
к вечеру опускается доход за тыс.показов страниц

Почему Вас это удивляет? Скорее всего у некоторых ваших рекламодателей просто настроено время показа к примеру Пн-Пт 8:00-18:00. В "узких" нишах это особо заметно.

Всего: 742