Nginx Tools рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ID рдмрдирд╛рдирд╛

рдореИрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╣реЗрдмреНрд░рд┐рдЯрд╛рдЪреЗрдЯреЗрд▓реА!

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ - рдЬреА рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рдХреА рдЦреЛрдЬ рдФрд░ рдореИрдВ рдПрдХ рд╕рдВрддреЛрд╖рдЬрдирдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓рд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рдШрдВрдЯреЗ рдореЗрдВ рдореЗрд░рд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрд╣ рд╕рдм рдПрдХ рдкреНрд░рдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ - рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛрдиреЛрдВ рдкрд░ рд╕рдлреЗрдж рдзрдмреНрдмреЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЬреАрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред


рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рд░ рдпрд╣ рдерд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ (рд╡реЗрдм тАЛтАЛрдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдХреА рдкреНрд░рдХреГрддрд┐ рдФрд░ рдзрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдЧрдВрддреБрдХ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓, рдЬрд▓реНрджреА рдФрд░ рдмрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпрд╛ рдЕрднреА рддрдХ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ Nginx рд╣реИред

Php рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдореИрдВ fastcgi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ php-fpm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ c ++ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╕рд░реНрд╡рд░ fastcgi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд░реЗрдЦ рд╣реИ:
рдЫрд╡рд┐

рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ C ++ рд╕рд░реНрд╡рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╣рдЪрд╛рди рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрдпрд╛, рдЬреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз php рдмреИрдХрдПрдВрдб рдХреЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ PHPSESSID рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рдХреА рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рддреЗрдЬрд╝, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реБрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛ред

рдореИрдВрдиреЗ рдпрд╣ рд╕рдм Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╛ рдмрд▓реНрдХрд┐, рдЗрд╕рдХреЗ рдкрд░реНрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрдм рддрдХ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЛрдг рд╣реИ - рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреЛ nginx рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ ./configure --with-http_perl_module

рдЕрдм рдпрд╣ рдХрд╛рд░реНрдп рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ:

рдЪрд░рдг 1. рдПрдХ рдореЛрддреА рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ

1. рдПрдХ рд╕реЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдХреАрдЬрд╝ рдореЗрдВред
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рди рдХреЗрд╡рд▓ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИред

2 рдПред рд╡реИрдзрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАред
рдпрд╣ рдореЗрд░реЗ рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдЧреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рднреА рд╣реИрдВред

рдпрджрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдорд╛рдиреНрдп рд╣реИ, рддреЛ рд╣рдо рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдирдпрд╛ (рдкреАред 2 рдмреА) рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ - рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

2 рдмреАред рдЖрдИрдбреА рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ
рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ + рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдкреАрдврд╝реА рд╣реИред
рдЕрдм рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ (рд╣реЗрдХреНрд╕рд╕реНрдЯреНрд░рд╛) рдФрд░ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ (рд╣реЗрдХреНрд╕рд╕реНрдЯреНрд░рд╛) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
рдмреЗрд╢рдХ, рдпрд╣ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣реЛрдЧрд╛ред

 package session; use strict; use Digest::MD5 qw(md5_hex); my $secret_key = '__TOP_SECRET__KEEP_IT_IN_BANK__'; # ,     my $cookie_name = 'SID'; #      my $rand_len = 16; #    my $hex_length = $rand_len * 2; my $hex_mask = "H".$hex_length; my $digest_length = 32; #    hexstr - 32 . #    sub hash { # data -  , ng - nginx . my ($data,$ng) = @_; #      ip  return md5_hex($data."_".$secret_key."_".$ng->header_in("User-Agent")."_".$ng->remote_addr); } #    .  MAN, , /dev/random  . #           nginx. #     . open(my $rand, '<', "/dev/random"); sub gen { # ng - nginx  my $ng = shift; #       #  32  (hexstr)   #  32  (hexstr)  (. sub hash) if ($ng->header_in("Cookie")=~/$cookie_name=(\w{$hex_length})(\w{$digest_length});?/) { if ($2 eq hash($1, $ng)) { return "$1$2"; } } #    read($rand, my $data, $rand_len); #    hexstr my $h = unpack($hex_mask, $data); #     (. sub hash) my $id = $h.hash($h, $ng); #   $ng->header_out("Set-Cookie","$cookie_name=$id;"); #   nginx return $id; } 1; __END__ 


рдЪрд░рдг 2. рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдорд┐рддреНрд░ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдмрдирд╛рдПрдВ

рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, nginx.conf рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
     http {
         ...
         perl_modules conf / perl;  # рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ
         perl_require session.pm;  # рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓
         perl_set $ sid рд╕рддреНрд░ :: рдЬреАрди;  # рдЪрд░ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
         ...
 
         рд╕рд░реНрд╡рд░ { 
             ..
             рд╕реНрдерд╛рди ~ * \ред php $ {
                 рд░реВрдЯ html / www;
                 fastcgi_pass http: // backend_upstreams;
                 fastcgi_index index.php;
                 fastcgi_param SCRIPT_FILENAME $ document_root / $ fastcgi_script_name;
                 fastcgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
                 fastcgi_param SID $ рд╕рд┐рдб;  # FastCGI рдЖрдИрдбреА рдмреИрдХрдПрдВрдб рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░
             }
            
             рд╕реНрдерд╛рди ~ * \ tst $ $            
                 fastcgi_pass unix: / tmp / cpp_server;
                 fastcgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
                 fastcgi_param SID $ рд╕рд┐рдб;  # FastCGI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
             }
         }
         ...
     }


рдЪрд░рдг 3. рд╕рддреНрдпрд╛рдкрди рдХрд┐ рд╣рдо рд╕рднреА nafig рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ

рдПрдХ рдЫреЛрдЯрд╛ рднрд╛рд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдорд╛рдирдХ рдореЛрддреА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
 #!/usr/bin/perl use strict; use Benchmark; use Digest::MD5 qw(md5_hex); my $secret_key = '__TOP_SECRET__KEEP_IT_IN_BANK__'; my $cookie_name = 'SID'; my $rand_length = 16; my $hex_mask = "H".($rand_length * 2); open(my $rand, '<', "/dev/random"); sub hash { my ($data) = @_; my $hash = md5_hex($data."_".$secret_key."_Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7_127.0.0.1"); return $hash; } sub gen { read($rand, my $data, $rand_length); my $h = unpack($hex_mask,$data); my $id = $h.hash($h); my $ng = "$cookie_name=$id;"; return $ng; } my $t0 = new Benchmark; for (my $i =0; $i < 1000000;++$i) { gen(); } my $t1 = new Benchmark; my $td = timediff($t1, $t0); print "Total:".timestr($td)."\n"; 


600Mhz VDSke рдкрд░ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
рдХреБрд▓: 6 рд╡реЙрд▓рдХреЙрдХ рд╕реЗрдХрдВрдбреНрд╕ (5.75 usr + 0.30 sys = 6.05 CPU)
рдпрд╛рдиреА рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ ~ 6 * 10 -6 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рд╕рддреНрдпрд╛рдкрди + рдкреАрдврд╝реА рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз = 12 * 10 -6 рд╕реЗрдХрдВрдб рд╣реИред
рдмрд╛рдХреА рдЕрдм рддрдХ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╣рд╛рдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдкреАрдПрдЪрдкреА


рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП php рдмреИрдХрдПрдВрдб рд╕реЗ рдкрд╣реБрдБрдЪ - $ _SERVER ['SID'];
рдЖрдк рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ session_id рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 <? session_id($_SERVER['SID']); session_name('SID'); //         PHPSESSID, SID session_start(); ?> 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╕рддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдореЗрдорд╛рдЪреЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рддреНрд░ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕рддреНрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ)ред

рдпреБрдкреАрдбреА:

рдХреНрдпреЛрдВ рдирд╣реАрдВ ngx_http_userid_module


рд╕рд╣реА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдореЗрдЯреНрд░реЛ рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд┐рдЯ рди рд╣реЛрдиреЗ рдХреЗ рджреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИрдВ ( рдЕрдзрд┐рдХ ):
  1. рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ
  2. рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдмреИрдХрдПрдВрдб рдХреЛ рдпреВрдЖрдИрдбреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ

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


All Articles