Pull to refresh

Comments 14

А вы отправляйте не нгинксом напрямую а чем то другим, что умеет логи читать, преобразовывать их и знает urlencode.

Proxy-pass здесь по-мойму лишний, хотя сходу красиво смотрится.
Вот именно proxy_pass и перенаправляет запрос на GA. Можно там прописать не прямую ссылку на GA, а свой php скрипт и в нём уже порешать эти проблемы. Но это показалось лишним звеном в системе…
А почему бы не воспользоваться Lua?
Некоторое назад писал уже про пример использования: habrahabr.ru/post/215295
Как раз хотел предложить автору использовать Lua-модуль или встроенный перл, котрые бы как раз помогли бы решить 146% описанных в конце статьи проблем :)
В стате есть упомянание про lua. Но хотелось использовать только стандартные модули Nginx. Этот конфиг можно использовать даже на shared-хостингах.

Если кто-то возьмётся за доработку конфига на lua, то будет здорово!
Ну, как я заметил, «встроенный Perl» таки является стандартным модулем который можно использовать везде :) Правда, Perl я знаю несколько хуже, чем Lua, увы ;)
Тогда я голосую за Perl-реализацию :))

А на lua уже есть пример, мне его прислал Николай Шардин (сотрудник Nginx в кремниевой долине):

location / {
set_by_lua $urlencode '
local str = ngx.var.uri
str = string.gsub (str, "([^%w ])",
function © return string.format ("%%%02X", string.byte©) end)
str = string.gsub (str, " ", "+")
return str';
return 200 «your URI is $uri
encoded to $urlencode»;
}

# curl -v 10.2.2.65/привет
* Hostname was NOT found in DNS cache
* Trying 10.2.2.65…
* Connected to 10.2.2.65 (10.2.2.65) port 80 (#0)
> GET /привет HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 10.2.2.65
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx/1.7.11 is not blacklisted
< Server: nginx/1.7.11
< Date: Fri, 05 Jun 2015 08:40:21 GMT
< Content-Type: text/html
< Content-Length: 82
< Connection: keep-alive
<
* Connection #0 to host 10.2.2.65 left intact
your URI is /привет
encoded to %2F%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82
А на lua уже есть пример, мне его прислал Николай Шардин (сотрудник Nginx в кремниевой долине):


* Сори, опечатка: Николай Шадрин
По-моему с post_action есть определенного рода проблемы — nginx не закрывает соединение с клиентом до завершения подзапроса, и были еще какие-то нюансы с кодом ответа. Механизм неплох, позволяет очень многое, но недокументирован он, как мне кажется, не зря.
Верно. Поэтому его не следует использовать для других решений кроме как для скачиваний, где коннект рвется сразу после окончания. Если у тебя keep-alive, то процесс nginx при этом будет блокироваться.
Хотя это и не сильно большая проблема, так как GA очень быстро отвечает на запросы, хоть и не мгновенно.
Смотрю на скриншот с юзер-агентами.
А почему в целых 86.73% случаев значение (not set)? Данные где-то теряются?
Нет, это наш клиент выкачивает без указания UserAgent. Данные вообще не теряются, это очень здорово! :)
Не один раз сверяли данные, всё 1 в 1.
Даже делали серьезное нагрузочное тестирование и всё отлично!
Sign up to leave a comment.