рдбрд╛рдЙрдирд▓реЛрдб рдЖрдБрдХрдбрд╝реЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ


Nginx + Lua рдмрдВрдбрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕реНрдереИрддрд┐рдХ рдбреЗрдЯрд╛ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЧрд┐рдирддреА рдФрд░ Google Analytics рдореЗрдВ рдЗрди рд╕рднреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирд┐рд░реНрджреЗрд╢ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ nginx-lua рдмрдВрдбрд▓ рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдирд╛рдо рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рд╡рд╣рд╛рдБ рднреА рддреИрдпрд╛рд░ рдЕрд╕реЗрдВрдмрд▓реА ( рдУрдкрдирд░реЗрд╕реНрдЯреА рдУрдЖрд░рдЬреА ) рд╣реИрдВред
рд▓реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ GA рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рджреЗрдЧреАред рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЬреАрдердм рдХреЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: github.com/wstucco/ssga.lua рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдЯреНрд░реИрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдирд╛рдо рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ, рдореЗрдЬрдмрд╛рди рдирд╛рдо рдФрд░ рдкрде рдЬрд┐рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЗрд╕рдХреЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЖрдБрдХрдбрд╝реЗ рдкреИрдирд▓ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╕рдВрдЪрд░рд┐рдд рдкрде рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
рдбрд╛рдЙрдирд▓реЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ / рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЬрдм рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЖрдВрдХрдбрд╝реЗ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рдЦреНрдд рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЕрдиреБрднрд╛рдЧ-рд╢реНрд░реЗрдгреА-рдкреНрд░рдХрд╛рд░ред
рджреЛрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕рд░рд▓ рддрд░реАрдХрд╛ рдЯреНрд░реИрдХрд┐рдВрдЧ

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╣реЗрд░рдлреЗрд░ рдФрд░ рддреИрдпрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдирдЧрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд┐рдЧ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рджреВрдВрдЧрд╛ред

resolver 8.8.8.8; access_by_lua ' local ssga = require( "ssga" ) ssga.track({ua = "UA-25XXXXXX-1") '; 

рд░рд┐рдмреВрдЯ рдФрд░ рдЬреАрдП рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред

рдЗрд╡реЗрдВрдЯ рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдпреЛрдЧреНрдп рдХрд░реЗрдВрдЧреЗред рдЬреАрдП рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╣рдореЗрдВ 3 рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╢реНрд░реЗрдгреА, рдХрд╛рд░реНрд░рд╡рд╛рдИ, рд▓реЗрдмрд▓ред рдЙрдирдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдлрд┐рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрддрд┐рдо URL рдерд╛: dl.domain.name/category/action/label/filename.ext
рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ GA рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрдврд╝рд╛рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдорд╛рдореВрд▓реА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ( github.com/fuCtor/ssga.lua )ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВ:

 server { listen 80; server_name dl.domain.name; root /var/www/public; error_page 502 /502.html; location / { add_header Cache-Control public; expires max; resolver 8.8.8.8; access_by_lua ' opt = {} index = 0 for value in string.gmatch(ngx.var.uri ,"%w+") do opt [index] = value index = index + 1 end local ssga = require( "ssga" ) ssga.event({ua = "UA-25XXXXXX-1", domain = "dl.domain.name", category = opt[0], action = opt[1], label = opt[2], value = 1}) '; } } 

рдкреБрдирдГ рд▓реЛрдб рд╕рд╣реЗрдЬреЗрдВред рдЕрдм рд╣рдо рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдкрд░ рдЖрдВрдХрдбрд╝реЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рд╕реНрд▓рд╛рдЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрддреНрдкрд╛рджрдХрддрд╛

рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рдЙрдВрдЯрд░ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо HEAD рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдЕрдорд▓ рдХрд░реЗрдВрдЧреЗ, рд╢рд░реАрд░ рд╣рдорд╛рд░реА рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред

 Concurrency Level: 30 Time taken for tests: 3.223 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 348000 bytes HTML transferred: 0 bytes Requests per second: 310.26 [#/sec] (mean) Time per request: 96.694 [ms] (mean) Time per request: 3.223 [ms] (mean, across all concurrent requests) Transfer rate: 105.44 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 94 95 0.6 95 99 Waiting: 94 95 0.6 95 99 Total: 94 95 0.6 95 99 

 Concurrency Level: 30 Time taken for tests: 0.048 seconds Complete requests: 200 Failed requests: 0 Write errors: 0 Total transferred: 69600 bytes HTML transferred: 0 bytes Requests per second: 4166.58 [#/sec] (mean) Time per request: 7.200 [ms] (mean) Time per request: 0.240 [ms] (mean, across all concurrent requests) Transfer rate: 1415.99 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.3 0 1 Processing: 6 6 0.8 6 9 Waiting: 6 6 0.8 6 9 Total: 6 7 0.9 6 10 


рд╣реЗрдбрд░ рдореЗрдВ рдЫрд╡рд┐ рдпрд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ ред

Source: https://habr.com/ru/post/In215295/


All Articles