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; ...
Значит я где-то ошибаюсь, только не пойму где... Почему я тестово сам не вижу влоге ошибки с моего Яндекс браузера?
Посмотрите на пример и на то что у Вас.
Вы попутали 1 и 0. Должно быть наоборот, чтобы их исключить из лога.
Параметр if (1.7.0) включает условную запись в лог. Запрос не будет записываться в лог, если результатом вычисления условия является “0” или пустая строка.
Тестирую всякое, и что я вам скажу. В осле всегда реклама показывается! Ни одного пустого блока, это при том, что я им вообще не пользуюсь. А в хроме - через раз...
Пользователи ИЕ всегда лучше кликали, чем с хрома. По моим наблюдениям.
Видимо менее искушенный зритель...
Почему то есть такое ощущение, что Блоки не показываются не потому что отсекаются дешевые объявы, а потому, что они не показываются тем, кто по статистике менее вероятно нажмет на объявление. Ну или оба эти фактора работают сразу.
Кстати, у Вас ведь по идее должен CTR подняться, т.к. 30% процентов некликающих отсеялись?
sultanbey: к вечеру опускается доход за тыс.показов страниц
Почему Вас это удивляет? Скорее всего у некоторых ваших рекламодателей просто настроено время показа к примеру Пн-Пт 8:00-18:00. В "узких" нишах это особо заметно.
Короче пробуйте так. Должно сработать.
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
Можно, даже в доке есть пример с $host в пути access_log
Да, Вы правы.
Уже поправил. То если используется буфер для логов то нельзя переменные использовать.
задача уместить условия для трех логов в одном мапе и потом как-то передать это в сервер
Не получится. В имя логфайла пихать переменные нельзя, а if тут работает только как 0 или не 0.
В общем, проще трех map решения не вижу.
UPD
Хм. А может и получится. Похоже что можно использовать переменные. Но тут есть ограничения:
пользователь, с правами которого работают рабочие процессы, должен иметь права на создание файлов в каталоге с такими логами;
не работает буферизация;
файл открывается для каждой записи в лог и сразу же после записи закрывается. Следует однако иметь в виду, что поскольку дескрипторы часто используемых файлов могут храниться в кэше, то при вращении логов в течение времени, заданного параметром valid директивы open_log_file_cache, запись может продолжаться в старый файл.
при каждой записи в лог проверяется существование корневого каталога для запроса — если этот каталог не существует, то лог не создаётся. Поэтому root и access_log нужно описывать на одном уровне:
server {
root /spool/vhost/data/$host;
access_log /spool/vhost/logs/$host;
...
А, ясно.
Пробуйте так:
default 0;
~*503:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}
Значит я где-то ошибаюсь, только не пойму где... Почему я тестово сам не вижу влоге ошибки с моего Яндекс браузера?
Посмотрите на пример и на то что у Вас.
Вы попутали 1 и 0. Должно быть наоборот, чтобы их исключить из лога.
Смотрите через аналитику.
Кстати, по поводу Гугл Аналитики. Я наконец понял почему у меня данные из Адсенса всегда отличаются от данных из Аналитики.
В Аналитике не учитываются клики по рекламе из блоков ссылок. Так что имейте в виду.
Тестирую всякое, и что я вам скажу. В осле всегда реклама показывается! Ни одного пустого блока, это при том, что я им вообще не пользуюсь. А в хроме - через раз...
Пользователи ИЕ всегда лучше кликали, чем с хрома. По моим наблюдениям.
Видимо менее искушенный зритель...
Почему то есть такое ощущение, что Блоки не показываются не потому что отсекаются дешевые объявы, а потому, что они не показываются тем, кто по статистике менее вероятно нажмет на объявление. Ну или оба эти фактора работают сразу.
Кстати, у Вас ведь по идее должен CTR подняться, т.к. 30% процентов некликающих отсеялись?
Отдельной мобильной уже нет.
Пока работает- https://www.google.com/adsense/m/
respekto, куда перешли?
к вечеру опускается доход за тыс.показов страниц
Почему Вас это удивляет? Скорее всего у некоторых ваших рекламодателей просто настроено время показа к примеру Пн-Пт 8:00-18:00. В "узких" нишах это особо заметно.