http_handlersocket_json_module

рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рдирд╛рдо рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣реИрдВрдбрд▓рд░рд╕реЙрдХреЗрдЯ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рдкрд╛рдиреА, рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рдереЛрдбрд╝рд╛ рд░реВрд╕реА) рдореЗрдВ рдмреЛрд▓реА рдЬрд╛рддреА рд╣реИред
NGX_HTTP_HANDLERSOCKET_JSON_MODULE рдореЙрдбреНрдпреВрд▓ рд╣реИрдВрдбрд▓рд░ рд╕реЙрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ MySQL рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдФрд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред AJAX рдХрд╛ рд╕реНрдХреЛрдкред
рд╕реНрд░реЛрдд рдХреЛрдб

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕реАрдорд╛рдПрдБ рдиреАрдЪреЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рд╕реНрдерд╛рдкрдирд╛

рд╕реНрдерд╛рдкрдирд╛ рдорд╛рдирдХ рд╣реИ, --add- рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╡рд┐рдиреНрдпрд╛рд╕:

./configure --add-module=/full/path/to/dir/nginx_http_handlersocket_json_module
рдЖрдЧреЗ
make & sudo make install;
рд╡рд┐рдиреНрдпрд╛рд╕

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг:
рд╕реНрдерд╛рди ~ / json / ( ? + ) / $ {
hs_json ;

hs_json_host 127 реж ред реж ред 1 ;
hs_json_port 9998 ;

hs_json_db рдкрд░реАрдХреНрд╖рдг ;
hs_json_table hs_test ;

hs_json_index рдХреЛрдб ; # рдкреНрд░рд╛рдердорд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ
hs_json_fields keyid , value , code ;

hs_json_op "=" ; # = рдбрд┐рдлрд╝реЙрд▓реНрдЯ
hs_json_limit 10 ; # рдбрд┐рдлрд╝реЙрд▓реНрдЯ 10

$ hs_request $ 1 рд╕реЗрдЯ рдХрд░реЗрдВ ;
}


рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:

hs_json; - рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ

рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрд╕реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╣реИ: 9998, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛):
hs_json_host 127.0.0.1;
hs_json_port 9998;
hs_json_db рдкрд░реАрдХреНрд╖рдг;

рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА (рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):
hs_json_table hs_test;
hs_json_fields keyid, value, code;

рдирдореВрдиреЗ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ:
hs_json_index рдХреЛрдб;
рдпрджрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ PRIMARY рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдХреЗ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдкрд░реЗрд╢рди рдПрдХ рд╢рд░реНрдд рд╣реИред
hs_json_op "="; # = рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИрдВ: =, <, <=>,> = =
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рддреЛ рдСрдкрд░реЗрд╢рди "рдмрд░рд╛рдмрд░" рд╣реИ

рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реАрдорд╛:
hs_json_limit 10;
рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ резрежред

рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рд╢рд░реНрдд $ hs_request рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдбреЗрдЯрд╛ рдХреЛ url рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕реНрдерд╛рди ~ / json / ( ? + ) / $ {
$ hs_request $ 1 рд╕реЗрдЯ рдХрд░реЗрдВ ;
}
GET рдпрд╛ COOKIES рдЪрд░ рдХреА рддрд░рд╣:
location ~ /json {
set $hs_request $get_id;
}

рдЙрджрд╛рд╣рд░рдг:
рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдХреНрд╖рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╢рд╣рд░ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реВрдЪреА 10 рд╡рд╕реНрддреБрдУрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд╢рд╣рд░ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ:
рд╢рд╣рд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП {
рдирд╛рдо VARCHAR ( 45 ) ,
рдЖрдИрдбреА INT ,
рдкреНрд░рд╛рдердорд┐рдХ ( рдЖрдИрдбреА ) ,
рдХреБрдВрдЬреА `рдирд╛рдо` ( ` рдирд╛рдо` ) ,
}
рдпрджрд┐ рдЖрдк рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
location ~ /city/(.+)/${
..... //
hs_json_index name,
hs_json_fields name;
hs_json_op ">=";
set $hs_request $1;
}

рдлрд┐рд░ рдпрд╣ рдХреНрд╡реЗрд░реА рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реЛрдЧрд╛: рд╢рд╣рд░реЛрдВ рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ * рдЬрд╣рд╛рдВ рд╕реЗ рд╢рд╣рд░_рдирд╛рдо > = '$ hs_request' рд╕реАрдорд╛ 10
рдЕрдиреБрд░реЛрдз URL рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП: http: // myserver.com/city/san/ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
[{"name":"San Amaro"},{"name":"San Andreas"},{"name":"San Andrs"} ... ]
рддреНрд░реБрдЯрд┐рдпреЛрдВ

  1. 500 - рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреНрд░реБрдЯрд┐, рдпрд╛ HS рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддреНрд░реБрдЯрд┐
  2. 503 - рдПрдЪрдПрд╕ рдпрд╛ рдЖрдИ / рдУ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ
рдпрджрд┐ рдХреБрдВрдЬреА рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рдПрдХ рдЦрд╛рд▓реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: {[]}, 404 рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдкреНрд░рддрд┐рдмрдВрдз

Bugreport рдореЗрдВ рд╕рднреА рдмрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдкреАрдПрдо рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

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


All Articles