diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f4f0481..0000000 --- a/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/**/target/ -!**/src/test/**/target/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ -!**/src/main/**/build/ -!**/src/test/**/build/ - -### VS Code ### -.vscode/ - - -nginx-1.18.0/ \ No newline at end of file diff --git a/nginx-1.18.0/conf/fastcgi.conf b/nginx-1.18.0/conf/fastcgi.conf deleted file mode 100644 index 091738c..0000000 --- a/nginx-1.18.0/conf/fastcgi.conf +++ /dev/null @@ -1,26 +0,0 @@ - -fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -fastcgi_param QUERY_STRING $query_string; -fastcgi_param REQUEST_METHOD $request_method; -fastcgi_param CONTENT_TYPE $content_type; -fastcgi_param CONTENT_LENGTH $content_length; - -fastcgi_param SCRIPT_NAME $fastcgi_script_name; -fastcgi_param REQUEST_URI $request_uri; -fastcgi_param DOCUMENT_URI $document_uri; -fastcgi_param DOCUMENT_ROOT $document_root; -fastcgi_param SERVER_PROTOCOL $server_protocol; -fastcgi_param REQUEST_SCHEME $scheme; -fastcgi_param HTTPS $https if_not_empty; - -fastcgi_param GATEWAY_INTERFACE CGI/1.1; -fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; - -fastcgi_param REMOTE_ADDR $remote_addr; -fastcgi_param REMOTE_PORT $remote_port; -fastcgi_param SERVER_ADDR $server_addr; -fastcgi_param SERVER_PORT $server_port; -fastcgi_param SERVER_NAME $server_name; - -# PHP only, required if PHP was built with --enable-force-cgi-redirect -fastcgi_param REDIRECT_STATUS 200; diff --git a/nginx-1.18.0/conf/fastcgi_params b/nginx-1.18.0/conf/fastcgi_params deleted file mode 100644 index 28decb9..0000000 --- a/nginx-1.18.0/conf/fastcgi_params +++ /dev/null @@ -1,25 +0,0 @@ - -fastcgi_param QUERY_STRING $query_string; -fastcgi_param REQUEST_METHOD $request_method; -fastcgi_param CONTENT_TYPE $content_type; -fastcgi_param CONTENT_LENGTH $content_length; - -fastcgi_param SCRIPT_NAME $fastcgi_script_name; -fastcgi_param REQUEST_URI $request_uri; -fastcgi_param DOCUMENT_URI $document_uri; -fastcgi_param DOCUMENT_ROOT $document_root; -fastcgi_param SERVER_PROTOCOL $server_protocol; -fastcgi_param REQUEST_SCHEME $scheme; -fastcgi_param HTTPS $https if_not_empty; - -fastcgi_param GATEWAY_INTERFACE CGI/1.1; -fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; - -fastcgi_param REMOTE_ADDR $remote_addr; -fastcgi_param REMOTE_PORT $remote_port; -fastcgi_param SERVER_ADDR $server_addr; -fastcgi_param SERVER_PORT $server_port; -fastcgi_param SERVER_NAME $server_name; - -# PHP only, required if PHP was built with --enable-force-cgi-redirect -fastcgi_param REDIRECT_STATUS 200; diff --git a/nginx-1.18.0/conf/koi-utf b/nginx-1.18.0/conf/koi-utf deleted file mode 100644 index e7974ff..0000000 --- a/nginx-1.18.0/conf/koi-utf +++ /dev/null @@ -1,109 +0,0 @@ - -# This map is not a full koi8-r <> utf8 map: it does not contain -# box-drawing and some other characters. Besides this map contains -# several koi8-u and Byelorussian letters which are not in koi8-r. -# If you need a full and standard map, use contrib/unicode2nginx/koi-utf -# map instead. - -charset_map koi8-r utf-8 { - - 80 E282AC ; # euro - - 95 E280A2 ; # bullet - - 9A C2A0 ; #   - - 9E C2B7 ; # · - - A3 D191 ; # small yo - A4 D194 ; # small Ukrainian ye - - A6 D196 ; # small Ukrainian i - A7 D197 ; # small Ukrainian yi - - AD D291 ; # small Ukrainian soft g - AE D19E ; # small Byelorussian short u - - B0 C2B0 ; # ° - - B3 D081 ; # capital YO - B4 D084 ; # capital Ukrainian YE - - B6 D086 ; # capital Ukrainian I - B7 D087 ; # capital Ukrainian YI - - B9 E28496 ; # numero sign - - BD D290 ; # capital Ukrainian soft G - BE D18E ; # capital Byelorussian short U - - BF C2A9 ; # (C) - - C0 D18E ; # small yu - C1 D0B0 ; # small a - C2 D0B1 ; # small b - C3 D186 ; # small ts - C4 D0B4 ; # small d - C5 D0B5 ; # small ye - C6 D184 ; # small f - C7 D0B3 ; # small g - C8 D185 ; # small kh - C9 D0B8 ; # small i - CA D0B9 ; # small j - CB D0BA ; # small k - CC D0BB ; # small l - CD D0BC ; # small m - CE D0BD ; # small n - CF D0BE ; # small o - - D0 D0BF ; # small p - D1 D18F ; # small ya - D2 D180 ; # small r - D3 D181 ; # small s - D4 D182 ; # small t - D5 D183 ; # small u - D6 D0B6 ; # small zh - D7 D0B2 ; # small v - D8 D18C ; # small soft sign - D9 D18B ; # small y - DA D0B7 ; # small z - DB D188 ; # small sh - DC D18D ; # small e - DD D189 ; # small shch - DE D187 ; # small ch - DF D18A ; # small hard sign - - E0 D0AE ; # capital YU - E1 D090 ; # capital A - E2 D091 ; # capital B - E3 D0A6 ; # capital TS - E4 D094 ; # capital D - E5 D095 ; # capital YE - E6 D0A4 ; # capital F - E7 D093 ; # capital G - E8 D0A5 ; # capital KH - E9 D098 ; # capital I - EA D099 ; # capital J - EB D09A ; # capital K - EC D09B ; # capital L - ED D09C ; # capital M - EE D09D ; # capital N - EF D09E ; # capital O - - F0 D09F ; # capital P - F1 D0AF ; # capital YA - F2 D0A0 ; # capital R - F3 D0A1 ; # capital S - F4 D0A2 ; # capital T - F5 D0A3 ; # capital U - F6 D096 ; # capital ZH - F7 D092 ; # capital V - F8 D0AC ; # capital soft sign - F9 D0AB ; # capital Y - FA D097 ; # capital Z - FB D0A8 ; # capital SH - FC D0AD ; # capital E - FD D0A9 ; # capital SHCH - FE D0A7 ; # capital CH - FF D0AA ; # capital hard sign -} diff --git a/nginx-1.18.0/conf/koi-win b/nginx-1.18.0/conf/koi-win deleted file mode 100644 index 72afabe..0000000 --- a/nginx-1.18.0/conf/koi-win +++ /dev/null @@ -1,103 +0,0 @@ - -charset_map koi8-r windows-1251 { - - 80 88 ; # euro - - 95 95 ; # bullet - - 9A A0 ; #   - - 9E B7 ; # · - - A3 B8 ; # small yo - A4 BA ; # small Ukrainian ye - - A6 B3 ; # small Ukrainian i - A7 BF ; # small Ukrainian yi - - AD B4 ; # small Ukrainian soft g - AE A2 ; # small Byelorussian short u - - B0 B0 ; # ° - - B3 A8 ; # capital YO - B4 AA ; # capital Ukrainian YE - - B6 B2 ; # capital Ukrainian I - B7 AF ; # capital Ukrainian YI - - B9 B9 ; # numero sign - - BD A5 ; # capital Ukrainian soft G - BE A1 ; # capital Byelorussian short U - - BF A9 ; # (C) - - C0 FE ; # small yu - C1 E0 ; # small a - C2 E1 ; # small b - C3 F6 ; # small ts - C4 E4 ; # small d - C5 E5 ; # small ye - C6 F4 ; # small f - C7 E3 ; # small g - C8 F5 ; # small kh - C9 E8 ; # small i - CA E9 ; # small j - CB EA ; # small k - CC EB ; # small l - CD EC ; # small m - CE ED ; # small n - CF EE ; # small o - - D0 EF ; # small p - D1 FF ; # small ya - D2 F0 ; # small r - D3 F1 ; # small s - D4 F2 ; # small t - D5 F3 ; # small u - D6 E6 ; # small zh - D7 E2 ; # small v - D8 FC ; # small soft sign - D9 FB ; # small y - DA E7 ; # small z - DB F8 ; # small sh - DC FD ; # small e - DD F9 ; # small shch - DE F7 ; # small ch - DF FA ; # small hard sign - - E0 DE ; # capital YU - E1 C0 ; # capital A - E2 C1 ; # capital B - E3 D6 ; # capital TS - E4 C4 ; # capital D - E5 C5 ; # capital YE - E6 D4 ; # capital F - E7 C3 ; # capital G - E8 D5 ; # capital KH - E9 C8 ; # capital I - EA C9 ; # capital J - EB CA ; # capital K - EC CB ; # capital L - ED CC ; # capital M - EE CD ; # capital N - EF CE ; # capital O - - F0 CF ; # capital P - F1 DF ; # capital YA - F2 D0 ; # capital R - F3 D1 ; # capital S - F4 D2 ; # capital T - F5 D3 ; # capital U - F6 C6 ; # capital ZH - F7 C2 ; # capital V - F8 DC ; # capital soft sign - F9 DB ; # capital Y - FA C7 ; # capital Z - FB D8 ; # capital SH - FC DD ; # capital E - FD D9 ; # capital SHCH - FE D7 ; # capital CH - FF DA ; # capital hard sign -} diff --git a/nginx-1.18.0/conf/mime.types b/nginx-1.18.0/conf/mime.types deleted file mode 100644 index 2961256..0000000 --- a/nginx-1.18.0/conf/mime.types +++ /dev/null @@ -1,97 +0,0 @@ - -types { - text/html html htm shtml; - text/css css; - text/xml xml; - image/gif gif; - image/jpeg jpeg jpg; - application/javascript js; - application/atom+xml atom; - application/rss+xml rss; - - text/mathml mml; - text/plain txt; - text/vnd.sun.j2me.app-descriptor jad; - text/vnd.wap.wml wml; - text/x-component htc; - - image/png png; - image/svg+xml svg svgz; - image/tiff tif tiff; - image/vnd.wap.wbmp wbmp; - image/webp webp; - image/x-icon ico; - image/x-jng jng; - image/x-ms-bmp bmp; - - font/woff woff; - font/woff2 woff2; - - application/java-archive jar war ear; - application/json json; - application/mac-binhex40 hqx; - application/msword doc; - application/pdf pdf; - application/postscript ps eps ai; - application/rtf rtf; - application/vnd.apple.mpegurl m3u8; - application/vnd.google-earth.kml+xml kml; - application/vnd.google-earth.kmz kmz; - application/vnd.ms-excel xls; - application/vnd.ms-fontobject eot; - application/vnd.ms-powerpoint ppt; - application/vnd.oasis.opendocument.graphics odg; - application/vnd.oasis.opendocument.presentation odp; - application/vnd.oasis.opendocument.spreadsheet ods; - application/vnd.oasis.opendocument.text odt; - application/vnd.openxmlformats-officedocument.presentationml.presentation - pptx; - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - xlsx; - application/vnd.openxmlformats-officedocument.wordprocessingml.document - docx; - application/vnd.wap.wmlc wmlc; - application/x-7z-compressed 7z; - application/x-cocoa cco; - application/x-java-archive-diff jardiff; - application/x-java-jnlp-file jnlp; - application/x-makeself run; - application/x-perl pl pm; - application/x-pilot prc pdb; - application/x-rar-compressed rar; - application/x-redhat-package-manager rpm; - application/x-sea sea; - application/x-shockwave-flash swf; - application/x-stuffit sit; - application/x-tcl tcl tk; - application/x-x509-ca-cert der pem crt; - application/x-xpinstall xpi; - application/xhtml+xml xhtml; - application/xspf+xml xspf; - application/zip zip; - - application/octet-stream bin exe dll; - application/octet-stream deb; - application/octet-stream dmg; - application/octet-stream iso img; - application/octet-stream msi msp msm; - - audio/midi mid midi kar; - audio/mpeg mp3; - audio/ogg ogg; - audio/x-m4a m4a; - audio/x-realaudio ra; - - video/3gpp 3gpp 3gp; - video/mp2t ts; - video/mp4 mp4; - video/mpeg mpeg mpg; - video/quicktime mov; - video/webm webm; - video/x-flv flv; - video/x-m4v m4v; - video/x-mng mng; - video/x-ms-asf asx asf; - video/x-ms-wmv wmv; - video/x-msvideo avi; -} diff --git a/nginx-1.18.0/conf/nginx.conf b/nginx-1.18.0/conf/nginx.conf deleted file mode 100644 index ff4572f..0000000 --- a/nginx-1.18.0/conf/nginx.conf +++ /dev/null @@ -1,51 +0,0 @@ - -worker_processes 1; - -events { - worker_connections 1024; -} - -http { - include mime.types; - default_type application/json; - - sendfile on; - - keepalive_timeout 65; - - server { - listen 8080; - server_name localhost; - # 指定前端项目所在的位置 - location / { - root html/hmdp; - index index.html index.htm; - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root html; - } - - - location /api { - default_type application/json; - #internal; - keepalive_timeout 30s; - keepalive_requests 1000; - #支持keep-alive - proxy_http_version 1.1; - rewrite /api(/.*) $1 break; - proxy_pass_request_headers on; - #more_clear_input_headers Accept-Encoding; - proxy_next_upstream error timeout; - proxy_pass http://127.0.0.1:8081; - #proxy_pass http://backend; - } - } - - upstream backend { - server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1; - #server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1; - } -} diff --git a/nginx-1.18.0/conf/scgi_params b/nginx-1.18.0/conf/scgi_params deleted file mode 100644 index 6d4ce4f..0000000 --- a/nginx-1.18.0/conf/scgi_params +++ /dev/null @@ -1,17 +0,0 @@ - -scgi_param REQUEST_METHOD $request_method; -scgi_param REQUEST_URI $request_uri; -scgi_param QUERY_STRING $query_string; -scgi_param CONTENT_TYPE $content_type; - -scgi_param DOCUMENT_URI $document_uri; -scgi_param DOCUMENT_ROOT $document_root; -scgi_param SCGI 1; -scgi_param SERVER_PROTOCOL $server_protocol; -scgi_param REQUEST_SCHEME $scheme; -scgi_param HTTPS $https if_not_empty; - -scgi_param REMOTE_ADDR $remote_addr; -scgi_param REMOTE_PORT $remote_port; -scgi_param SERVER_PORT $server_port; -scgi_param SERVER_NAME $server_name; diff --git a/nginx-1.18.0/conf/uwsgi_params b/nginx-1.18.0/conf/uwsgi_params deleted file mode 100644 index 09c732c..0000000 --- a/nginx-1.18.0/conf/uwsgi_params +++ /dev/null @@ -1,17 +0,0 @@ - -uwsgi_param QUERY_STRING $query_string; -uwsgi_param REQUEST_METHOD $request_method; -uwsgi_param CONTENT_TYPE $content_type; -uwsgi_param CONTENT_LENGTH $content_length; - -uwsgi_param REQUEST_URI $request_uri; -uwsgi_param PATH_INFO $document_uri; -uwsgi_param DOCUMENT_ROOT $document_root; -uwsgi_param SERVER_PROTOCOL $server_protocol; -uwsgi_param REQUEST_SCHEME $scheme; -uwsgi_param HTTPS $https if_not_empty; - -uwsgi_param REMOTE_ADDR $remote_addr; -uwsgi_param REMOTE_PORT $remote_port; -uwsgi_param SERVER_PORT $server_port; -uwsgi_param SERVER_NAME $server_name; diff --git a/nginx-1.18.0/conf/win-utf b/nginx-1.18.0/conf/win-utf deleted file mode 100644 index ed8bc00..0000000 --- a/nginx-1.18.0/conf/win-utf +++ /dev/null @@ -1,126 +0,0 @@ - -# This map is not a full windows-1251 <> utf8 map: it does not -# contain Serbian and Macedonian letters. If you need a full map, -# use contrib/unicode2nginx/win-utf map instead. - -charset_map windows-1251 utf-8 { - - 82 E2809A ; # single low-9 quotation mark - - 84 E2809E ; # double low-9 quotation mark - 85 E280A6 ; # ellipsis - 86 E280A0 ; # dagger - 87 E280A1 ; # double dagger - 88 E282AC ; # euro - 89 E280B0 ; # per mille - - 91 E28098 ; # left single quotation mark - 92 E28099 ; # right single quotation mark - 93 E2809C ; # left double quotation mark - 94 E2809D ; # right double quotation mark - 95 E280A2 ; # bullet - 96 E28093 ; # en dash - 97 E28094 ; # em dash - - 99 E284A2 ; # trade mark sign - - A0 C2A0 ; #   - A1 D18E ; # capital Byelorussian short U - A2 D19E ; # small Byelorussian short u - - A4 C2A4 ; # currency sign - A5 D290 ; # capital Ukrainian soft G - A6 C2A6 ; # borken bar - A7 C2A7 ; # section sign - A8 D081 ; # capital YO - A9 C2A9 ; # (C) - AA D084 ; # capital Ukrainian YE - AB C2AB ; # left-pointing double angle quotation mark - AC C2AC ; # not sign - AD C2AD ; # soft hypen - AE C2AE ; # (R) - AF D087 ; # capital Ukrainian YI - - B0 C2B0 ; # ° - B1 C2B1 ; # plus-minus sign - B2 D086 ; # capital Ukrainian I - B3 D196 ; # small Ukrainian i - B4 D291 ; # small Ukrainian soft g - B5 C2B5 ; # micro sign - B6 C2B6 ; # pilcrow sign - B7 C2B7 ; # · - B8 D191 ; # small yo - B9 E28496 ; # numero sign - BA D194 ; # small Ukrainian ye - BB C2BB ; # right-pointing double angle quotation mark - - BF D197 ; # small Ukrainian yi - - C0 D090 ; # capital A - C1 D091 ; # capital B - C2 D092 ; # capital V - C3 D093 ; # capital G - C4 D094 ; # capital D - C5 D095 ; # capital YE - C6 D096 ; # capital ZH - C7 D097 ; # capital Z - C8 D098 ; # capital I - C9 D099 ; # capital J - CA D09A ; # capital K - CB D09B ; # capital L - CC D09C ; # capital M - CD D09D ; # capital N - CE D09E ; # capital O - CF D09F ; # capital P - - D0 D0A0 ; # capital R - D1 D0A1 ; # capital S - D2 D0A2 ; # capital T - D3 D0A3 ; # capital U - D4 D0A4 ; # capital F - D5 D0A5 ; # capital KH - D6 D0A6 ; # capital TS - D7 D0A7 ; # capital CH - D8 D0A8 ; # capital SH - D9 D0A9 ; # capital SHCH - DA D0AA ; # capital hard sign - DB D0AB ; # capital Y - DC D0AC ; # capital soft sign - DD D0AD ; # capital E - DE D0AE ; # capital YU - DF D0AF ; # capital YA - - E0 D0B0 ; # small a - E1 D0B1 ; # small b - E2 D0B2 ; # small v - E3 D0B3 ; # small g - E4 D0B4 ; # small d - E5 D0B5 ; # small ye - E6 D0B6 ; # small zh - E7 D0B7 ; # small z - E8 D0B8 ; # small i - E9 D0B9 ; # small j - EA D0BA ; # small k - EB D0BB ; # small l - EC D0BC ; # small m - ED D0BD ; # small n - EE D0BE ; # small o - EF D0BF ; # small p - - F0 D180 ; # small r - F1 D181 ; # small s - F2 D182 ; # small t - F3 D183 ; # small u - F4 D184 ; # small f - F5 D185 ; # small kh - F6 D186 ; # small ts - F7 D187 ; # small ch - F8 D188 ; # small sh - F9 D189 ; # small shch - FA D18A ; # small hard sign - FB D18B ; # small y - FC D18C ; # small soft sign - FD D18D ; # small e - FE D18E ; # small yu - FF D18F ; # small ya -} diff --git a/nginx-1.18.0/contrib/README b/nginx-1.18.0/contrib/README deleted file mode 100644 index fec4b20..0000000 --- a/nginx-1.18.0/contrib/README +++ /dev/null @@ -1,21 +0,0 @@ - -geo2nginx.pl by Andrei Nigmatulin - - The perl script to convert CSV geoip database ( free download - at http://www.maxmind.com/app/geoip_country ) to format, suitable - for use by the ngx_http_geo_module. - - -unicode2nginx by Maxim Dounin - - The perl script to convert unicode mappings ( available - at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx - configuration file format. - Two generated full maps for windows-1251 and koi8-r. - - -vim by Evan Miller - - Syntax highlighting of nginx configuration for vim, to be - placed into ~/.vim/. - diff --git a/nginx-1.18.0/contrib/geo2nginx.pl b/nginx-1.18.0/contrib/geo2nginx.pl deleted file mode 100644 index bc8af46..0000000 --- a/nginx-1.18.0/contrib/geo2nginx.pl +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/perl -w - -# (c) Andrei Nigmatulin, 2005 -# -# this script provided "as is", without any warranties. use it at your own risk. -# -# special thanx to Andrew Sitnikov for perl port -# -# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country) -# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx) -# -# for example, line with ip range -# -# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation" -# -# will be converted to four subnetworks: -# -# 62.16.68.0/22 RU; -# 62.16.72.0/21 RU; -# 62.16.80.0/20 RU; -# 62.16.96.0/19 RU; - - -use warnings; -use strict; - -while( ){ - if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){ - print_subnets($1, $2, $3); - } -} - -sub print_subnets { - my ($a1, $a2, $c) = @_; - my $l; - while ($a1 <= $a2) { - for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){}; - print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n"; - $a1 += (1 << $l); - } -} - -sub long2ip { - my $ip = shift; - - my $str = 0; - - $str = ($ip & 255); - - $ip >>= 8; - $str = ($ip & 255).".$str"; - - $ip >>= 8; - $str = ($ip & 255).".$str"; - - $ip >>= 8; - $str = ($ip & 255).".$str"; -} diff --git a/nginx-1.18.0/contrib/unicode2nginx/koi-utf b/nginx-1.18.0/contrib/unicode2nginx/koi-utf deleted file mode 100644 index 48853af..0000000 --- a/nginx-1.18.0/contrib/unicode2nginx/koi-utf +++ /dev/null @@ -1,131 +0,0 @@ -charset_map koi8-r utf-8 { - - 80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL - 81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL - 82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT - 83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT - 84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT - 85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT - 86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT - 88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL - 8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 8B E29680 ; # UPPER HALF BLOCK - 8C E29684 ; # LOWER HALF BLOCK - 8D E29688 ; # FULL BLOCK - 8E E2968C ; # LEFT HALF BLOCK - 8F E29690 ; # RIGHT HALF BLOCK - 90 E29691 ; # LIGHT SHADE - 91 E29692 ; # MEDIUM SHADE - 92 E29693 ; # DARK SHADE - 93 E28CA0 ; # TOP HALF INTEGRAL - 94 E296A0 ; # BLACK SQUARE - 95 E28899 ; # BULLET OPERATOR - 96 E2889A ; # SQUARE ROOT - 97 E28988 ; # ALMOST EQUAL TO - 98 E289A4 ; # LESS-THAN OR EQUAL TO - 99 E289A5 ; # GREATER-THAN OR EQUAL TO - 9A C2A0 ; # NO-BREAK SPACE - 9B E28CA1 ; # BOTTOM HALF INTEGRAL - 9C C2B0 ; # DEGREE SIGN - 9D C2B2 ; # SUPERSCRIPT TWO - 9E C2B7 ; # MIDDLE DOT - 9F C3B7 ; # DIVISION SIGN - A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL - A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL - A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE - A3 D191 ; # CYRILLIC SMALL LETTER IO - A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE - A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT - A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE - A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE - A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT - A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE - AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE - AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT - AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE - AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE - AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT - AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE - B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - B3 D081 ; # CYRILLIC CAPITAL LETTER IO - B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE - B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT - B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE - B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE - B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE - BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE - BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL - BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE - BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - BF C2A9 ; # COPYRIGHT SIGN - C0 D18E ; # CYRILLIC SMALL LETTER YU - C1 D0B0 ; # CYRILLIC SMALL LETTER A - C2 D0B1 ; # CYRILLIC SMALL LETTER BE - C3 D186 ; # CYRILLIC SMALL LETTER TSE - C4 D0B4 ; # CYRILLIC SMALL LETTER DE - C5 D0B5 ; # CYRILLIC SMALL LETTER IE - C6 D184 ; # CYRILLIC SMALL LETTER EF - C7 D0B3 ; # CYRILLIC SMALL LETTER GHE - C8 D185 ; # CYRILLIC SMALL LETTER HA - C9 D0B8 ; # CYRILLIC SMALL LETTER I - CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I - CB D0BA ; # CYRILLIC SMALL LETTER KA - CC D0BB ; # CYRILLIC SMALL LETTER EL - CD D0BC ; # CYRILLIC SMALL LETTER EM - CE D0BD ; # CYRILLIC SMALL LETTER EN - CF D0BE ; # CYRILLIC SMALL LETTER O - D0 D0BF ; # CYRILLIC SMALL LETTER PE - D1 D18F ; # CYRILLIC SMALL LETTER YA - D2 D180 ; # CYRILLIC SMALL LETTER ER - D3 D181 ; # CYRILLIC SMALL LETTER ES - D4 D182 ; # CYRILLIC SMALL LETTER TE - D5 D183 ; # CYRILLIC SMALL LETTER U - D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE - D7 D0B2 ; # CYRILLIC SMALL LETTER VE - D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN - D9 D18B ; # CYRILLIC SMALL LETTER YERU - DA D0B7 ; # CYRILLIC SMALL LETTER ZE - DB D188 ; # CYRILLIC SMALL LETTER SHA - DC D18D ; # CYRILLIC SMALL LETTER E - DD D189 ; # CYRILLIC SMALL LETTER SHCHA - DE D187 ; # CYRILLIC SMALL LETTER CHE - DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN - E0 D0AE ; # CYRILLIC CAPITAL LETTER YU - E1 D090 ; # CYRILLIC CAPITAL LETTER A - E2 D091 ; # CYRILLIC CAPITAL LETTER BE - E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE - E4 D094 ; # CYRILLIC CAPITAL LETTER DE - E5 D095 ; # CYRILLIC CAPITAL LETTER IE - E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF - E7 D093 ; # CYRILLIC CAPITAL LETTER GHE - E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA - E9 D098 ; # CYRILLIC CAPITAL LETTER I - EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I - EB D09A ; # CYRILLIC CAPITAL LETTER KA - EC D09B ; # CYRILLIC CAPITAL LETTER EL - ED D09C ; # CYRILLIC CAPITAL LETTER EM - EE D09D ; # CYRILLIC CAPITAL LETTER EN - EF D09E ; # CYRILLIC CAPITAL LETTER O - F0 D09F ; # CYRILLIC CAPITAL LETTER PE - F1 D0AF ; # CYRILLIC CAPITAL LETTER YA - F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER - F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES - F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE - F5 D0A3 ; # CYRILLIC CAPITAL LETTER U - F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE - F7 D092 ; # CYRILLIC CAPITAL LETTER VE - F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN - F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU - FA D097 ; # CYRILLIC CAPITAL LETTER ZE - FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA - FC D0AD ; # CYRILLIC CAPITAL LETTER E - FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA - FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE - FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN -} diff --git a/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl b/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl deleted file mode 100644 index d113fed..0000000 --- a/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/perl -w - -# Convert unicode mappings to nginx configuration file format. - -# You may find useful mappings in various places, including -# unicode.org official site: -# -# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT -# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT - -# Needs perl 5.6 or later. - -# Written by Maxim Dounin, mdounin@mdounin.ru - -############################################################################### - -require 5.006; - -while (<>) { - # Skip comments and empty lines - - next if /^#/; - next if /^\s*$/; - chomp; - - # Convert mappings - - if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) { - # Mapping "#" - my $cs_code = $1; - my $un_code = $2; - my $un_name = $3; - - # Produce UTF-8 sequence from character code; - - my $un_utf8 = join('', - map { sprintf("%02X", $_) } - unpack("U0C*", pack("U", hex($un_code))) - ); - - print " $cs_code $un_utf8 ; $un_name\n"; - - } else { - warn "Unrecognized line: '$_'"; - } -} - -############################################################################### diff --git a/nginx-1.18.0/contrib/unicode2nginx/win-utf b/nginx-1.18.0/contrib/unicode2nginx/win-utf deleted file mode 100644 index af9f9aa..0000000 --- a/nginx-1.18.0/contrib/unicode2nginx/win-utf +++ /dev/null @@ -1,130 +0,0 @@ -charset_map windows-1251 utf-8 { - - 80 D082 ; #CYRILLIC CAPITAL LETTER DJE - 81 D083 ; #CYRILLIC CAPITAL LETTER GJE - 82 E2809A ; #SINGLE LOW-9 QUOTATION MARK - 83 D193 ; #CYRILLIC SMALL LETTER GJE - 84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK - 85 E280A6 ; #HORIZONTAL ELLIPSIS - 86 E280A0 ; #DAGGER - 87 E280A1 ; #DOUBLE DAGGER - 88 E282AC ; #EURO SIGN - 89 E280B0 ; #PER MILLE SIGN - 8A D089 ; #CYRILLIC CAPITAL LETTER LJE - 8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 8C D08A ; #CYRILLIC CAPITAL LETTER NJE - 8D D08C ; #CYRILLIC CAPITAL LETTER KJE - 8E D08B ; #CYRILLIC CAPITAL LETTER TSHE - 8F D08F ; #CYRILLIC CAPITAL LETTER DZHE - 90 D192 ; #CYRILLIC SMALL LETTER DJE - 91 E28098 ; #LEFT SINGLE QUOTATION MARK - 92 E28099 ; #RIGHT SINGLE QUOTATION MARK - 93 E2809C ; #LEFT DOUBLE QUOTATION MARK - 94 E2809D ; #RIGHT DOUBLE QUOTATION MARK - 95 E280A2 ; #BULLET - 96 E28093 ; #EN DASH - 97 E28094 ; #EM DASH - 99 E284A2 ; #TRADE MARK SIGN - 9A D199 ; #CYRILLIC SMALL LETTER LJE - 9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 9C D19A ; #CYRILLIC SMALL LETTER NJE - 9D D19C ; #CYRILLIC SMALL LETTER KJE - 9E D19B ; #CYRILLIC SMALL LETTER TSHE - 9F D19F ; #CYRILLIC SMALL LETTER DZHE - A0 C2A0 ; #NO-BREAK SPACE - A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U - A2 D19E ; #CYRILLIC SMALL LETTER SHORT U - A3 D088 ; #CYRILLIC CAPITAL LETTER JE - A4 C2A4 ; #CURRENCY SIGN - A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN - A6 C2A6 ; #BROKEN BAR - A7 C2A7 ; #SECTION SIGN - A8 D081 ; #CYRILLIC CAPITAL LETTER IO - A9 C2A9 ; #COPYRIGHT SIGN - AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE - AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - AC C2AC ; #NOT SIGN - AD C2AD ; #SOFT HYPHEN - AE C2AE ; #REGISTERED SIGN - AF D087 ; #CYRILLIC CAPITAL LETTER YI - B0 C2B0 ; #DEGREE SIGN - B1 C2B1 ; #PLUS-MINUS SIGN - B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I - B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN - B5 C2B5 ; #MICRO SIGN - B6 C2B6 ; #PILCROW SIGN - B7 C2B7 ; #MIDDLE DOT - B8 D191 ; #CYRILLIC SMALL LETTER IO - B9 E28496 ; #NUMERO SIGN - BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE - BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - BC D198 ; #CYRILLIC SMALL LETTER JE - BD D085 ; #CYRILLIC CAPITAL LETTER DZE - BE D195 ; #CYRILLIC SMALL LETTER DZE - BF D197 ; #CYRILLIC SMALL LETTER YI - C0 D090 ; #CYRILLIC CAPITAL LETTER A - C1 D091 ; #CYRILLIC CAPITAL LETTER BE - C2 D092 ; #CYRILLIC CAPITAL LETTER VE - C3 D093 ; #CYRILLIC CAPITAL LETTER GHE - C4 D094 ; #CYRILLIC CAPITAL LETTER DE - C5 D095 ; #CYRILLIC CAPITAL LETTER IE - C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE - C7 D097 ; #CYRILLIC CAPITAL LETTER ZE - C8 D098 ; #CYRILLIC CAPITAL LETTER I - C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I - CA D09A ; #CYRILLIC CAPITAL LETTER KA - CB D09B ; #CYRILLIC CAPITAL LETTER EL - CC D09C ; #CYRILLIC CAPITAL LETTER EM - CD D09D ; #CYRILLIC CAPITAL LETTER EN - CE D09E ; #CYRILLIC CAPITAL LETTER O - CF D09F ; #CYRILLIC CAPITAL LETTER PE - D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER - D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES - D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE - D3 D0A3 ; #CYRILLIC CAPITAL LETTER U - D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF - D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA - D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE - D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE - D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA - D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA - DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN - DB D0AB ; #CYRILLIC CAPITAL LETTER YERU - DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN - DD D0AD ; #CYRILLIC CAPITAL LETTER E - DE D0AE ; #CYRILLIC CAPITAL LETTER YU - DF D0AF ; #CYRILLIC CAPITAL LETTER YA - E0 D0B0 ; #CYRILLIC SMALL LETTER A - E1 D0B1 ; #CYRILLIC SMALL LETTER BE - E2 D0B2 ; #CYRILLIC SMALL LETTER VE - E3 D0B3 ; #CYRILLIC SMALL LETTER GHE - E4 D0B4 ; #CYRILLIC SMALL LETTER DE - E5 D0B5 ; #CYRILLIC SMALL LETTER IE - E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE - E7 D0B7 ; #CYRILLIC SMALL LETTER ZE - E8 D0B8 ; #CYRILLIC SMALL LETTER I - E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I - EA D0BA ; #CYRILLIC SMALL LETTER KA - EB D0BB ; #CYRILLIC SMALL LETTER EL - EC D0BC ; #CYRILLIC SMALL LETTER EM - ED D0BD ; #CYRILLIC SMALL LETTER EN - EE D0BE ; #CYRILLIC SMALL LETTER O - EF D0BF ; #CYRILLIC SMALL LETTER PE - F0 D180 ; #CYRILLIC SMALL LETTER ER - F1 D181 ; #CYRILLIC SMALL LETTER ES - F2 D182 ; #CYRILLIC SMALL LETTER TE - F3 D183 ; #CYRILLIC SMALL LETTER U - F4 D184 ; #CYRILLIC SMALL LETTER EF - F5 D185 ; #CYRILLIC SMALL LETTER HA - F6 D186 ; #CYRILLIC SMALL LETTER TSE - F7 D187 ; #CYRILLIC SMALL LETTER CHE - F8 D188 ; #CYRILLIC SMALL LETTER SHA - F9 D189 ; #CYRILLIC SMALL LETTER SHCHA - FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN - FB D18B ; #CYRILLIC SMALL LETTER YERU - FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN - FD D18D ; #CYRILLIC SMALL LETTER E - FE D18E ; #CYRILLIC SMALL LETTER YU - FF D18F ; #CYRILLIC SMALL LETTER YA -} diff --git a/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim b/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim deleted file mode 100644 index 3ae470d..0000000 --- a/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim +++ /dev/null @@ -1,4 +0,0 @@ -au BufRead,BufNewFile *.nginx set ft=nginx -au BufRead,BufNewFile */etc/nginx/* set ft=nginx -au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx -au BufRead,BufNewFile nginx.conf set ft=nginx diff --git a/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim b/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim deleted file mode 100644 index 463eea9..0000000 --- a/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim +++ /dev/null @@ -1 +0,0 @@ -setlocal commentstring=#\ %s diff --git a/nginx-1.18.0/contrib/vim/indent/nginx.vim b/nginx-1.18.0/contrib/vim/indent/nginx.vim deleted file mode 100644 index 8601366..0000000 --- a/nginx-1.18.0/contrib/vim/indent/nginx.vim +++ /dev/null @@ -1,11 +0,0 @@ -if exists("b:did_indent") - finish -endif -let b:did_indent = 1 - -setlocal indentexpr= - -" cindent actually works for nginx' simple file structure -setlocal cindent -" Just make sure that the comments are not reset as defs would be. -setlocal cinkeys-=0# diff --git a/nginx-1.18.0/contrib/vim/syntax/nginx.vim b/nginx-1.18.0/contrib/vim/syntax/nginx.vim deleted file mode 100644 index 1a3a7b7..0000000 --- a/nginx-1.18.0/contrib/vim/syntax/nginx.vim +++ /dev/null @@ -1,2338 +0,0 @@ -" Vim syntax file -" Language: nginx.conf - -if exists("b:current_syntax") - finish -end - -" general syntax - -if has("patch-7.4.1142") - " except control characters, ";", "{", and "}" - syn iskeyword 33-58,60-122,124,126-255 -endif - -syn match ngxName '\([^;{} \t\\]\|\\.\)\+' - \ contains=@ngxDirectives - \ nextgroup=@ngxParams skipwhite skipempty -syn match ngxParam '\(\${\|[^;{ \t\\]\|\\.\)\+' - \ contained - \ contains=ngxVariable - \ nextgroup=@ngxParams skipwhite skipempty -syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ - \ contains=ngxVariableString - \ nextgroup=@ngxParams skipwhite skipempty -syn match ngxParamComment '#.*$' - \ nextgroup=@ngxParams skipwhite skipempty -syn match ngxSemicolon ';' contained -syn region ngxBlock start=+{+ end=+}+ contained - \ contains=@ngxTopLevel -syn match ngxComment '#.*$' - -syn match ngxVariable '\$\(\w\+\|{\w\+}\)' contained -syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained - -syn cluster ngxTopLevel - \ contains=ngxName,ngxString,ngxComment -syn cluster ngxDirectives - \ contains=ngxDirective,ngxDirectiveBlock,ngxDirectiveImportant - \ add=ngxDirectiveControl,ngxDirectiveError,ngxDirectiveDeprecated - \ add=ngxDirectiveThirdParty,ngxDirectiveThirdPartyDeprecated -syn cluster ngxParams - \ contains=ngxParam,ngxString,ngxParamComment,ngxSemicolon,ngxBlock - -" boolean parameters - -syn keyword ngxBoolean contained on off - \ nextgroup=@ngxParams skipwhite skipempty -syn cluster ngxParams add=ngxBoolean - -" listen directive - -syn cluster ngxTopLevel add=ngxDirectiveListen -syn keyword ngxDirectiveListen listen - \ nextgroup=@ngxListenParams skipwhite skipempty -syn match ngxListenParam '\(\${\|[^;{ \t\\]\|\\.\)\+' - \ contained - \ nextgroup=@ngxListenParams skipwhite skipempty -syn region ngxListenString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ - \ contained - \ nextgroup=@ngxListenParams skipwhite skipempty -syn match ngxListenComment '#.*$' - \ contained - \ nextgroup=@ngxListenParams skipwhite skipempty -syn keyword ngxListenOptions contained - \ default_server ssl http2 proxy_protocol - \ setfib fastopen backlog rcvbuf sndbuf accept_filter deferred bind - \ ipv6only reuseport so_keepalive - \ nextgroup=@ngxListenParams skipwhite skipempty -syn keyword ngxListenOptionsDeprecated contained - \ spdy - \ nextgroup=@ngxListenParams skipwhite skipempty -syn cluster ngxListenParams - \ contains=ngxListenParam,ngxListenString,ngxListenComment - \ add=ngxListenOptions,ngxListenOptionsDeprecated - -syn keyword ngxDirectiveBlock contained http -syn keyword ngxDirectiveBlock contained stream -syn keyword ngxDirectiveBlock contained mail -syn keyword ngxDirectiveBlock contained events -syn keyword ngxDirectiveBlock contained server -syn keyword ngxDirectiveBlock contained types -syn keyword ngxDirectiveBlock contained location -syn keyword ngxDirectiveBlock contained upstream -syn keyword ngxDirectiveBlock contained charset_map -syn keyword ngxDirectiveBlock contained limit_except -syn keyword ngxDirectiveBlock contained if -syn keyword ngxDirectiveBlock contained geo -syn keyword ngxDirectiveBlock contained map -syn keyword ngxDirectiveBlock contained split_clients -syn keyword ngxDirectiveBlock contained match - -syn keyword ngxDirectiveImportant contained include -syn keyword ngxDirectiveImportant contained root -syn keyword ngxDirectiveImportant contained server_name -syn keyword ngxDirectiveImportant contained internal -syn keyword ngxDirectiveImportant contained proxy_pass -syn keyword ngxDirectiveImportant contained memcached_pass -syn keyword ngxDirectiveImportant contained fastcgi_pass -syn keyword ngxDirectiveImportant contained scgi_pass -syn keyword ngxDirectiveImportant contained uwsgi_pass -syn keyword ngxDirectiveImportant contained try_files - -syn keyword ngxDirectiveControl contained break -syn keyword ngxDirectiveControl contained return -syn keyword ngxDirectiveControl contained rewrite -syn keyword ngxDirectiveControl contained set - -syn keyword ngxDirectiveError contained error_page -syn keyword ngxDirectiveError contained post_action - -syn keyword ngxDirectiveDeprecated contained limit_zone -syn keyword ngxDirectiveDeprecated contained proxy_downstream_buffer -syn keyword ngxDirectiveDeprecated contained proxy_upstream_buffer -syn keyword ngxDirectiveDeprecated contained spdy_chunk_size -syn keyword ngxDirectiveDeprecated contained spdy_headers_comp -syn keyword ngxDirectiveDeprecated contained spdy_keepalive_timeout -syn keyword ngxDirectiveDeprecated contained spdy_max_concurrent_streams -syn keyword ngxDirectiveDeprecated contained spdy_pool_size -syn keyword ngxDirectiveDeprecated contained spdy_recv_buffer_size -syn keyword ngxDirectiveDeprecated contained spdy_recv_timeout -syn keyword ngxDirectiveDeprecated contained spdy_streams_index_size -syn keyword ngxDirectiveDeprecated contained ssl -syn keyword ngxDirectiveDeprecated contained upstream_conf - -syn keyword ngxDirective contained absolute_redirect -syn keyword ngxDirective contained accept_mutex -syn keyword ngxDirective contained accept_mutex_delay -syn keyword ngxDirective contained acceptex_read -syn keyword ngxDirective contained access_log -syn keyword ngxDirective contained add_after_body -syn keyword ngxDirective contained add_before_body -syn keyword ngxDirective contained add_header -syn keyword ngxDirective contained add_trailer -syn keyword ngxDirective contained addition_types -syn keyword ngxDirective contained aio -syn keyword ngxDirective contained aio_write -syn keyword ngxDirective contained alias -syn keyword ngxDirective contained allow -syn keyword ngxDirective contained ancient_browser -syn keyword ngxDirective contained ancient_browser_value -syn keyword ngxDirective contained api -syn keyword ngxDirective contained auth_basic -syn keyword ngxDirective contained auth_basic_user_file -syn keyword ngxDirective contained auth_http -syn keyword ngxDirective contained auth_http_header -syn keyword ngxDirective contained auth_http_pass_client_cert -syn keyword ngxDirective contained auth_http_timeout -syn keyword ngxDirective contained auth_jwt -syn keyword ngxDirective contained auth_jwt_claim_set -syn keyword ngxDirective contained auth_jwt_header_set -syn keyword ngxDirective contained auth_jwt_key_file -syn keyword ngxDirective contained auth_jwt_key_request -syn keyword ngxDirective contained auth_jwt_leeway -syn keyword ngxDirective contained auth_request -syn keyword ngxDirective contained auth_request_set -syn keyword ngxDirective contained autoindex -syn keyword ngxDirective contained autoindex_exact_size -syn keyword ngxDirective contained autoindex_format -syn keyword ngxDirective contained autoindex_localtime -syn keyword ngxDirective contained charset -syn keyword ngxDirective contained charset_types -syn keyword ngxDirective contained chunked_transfer_encoding -syn keyword ngxDirective contained client_body_buffer_size -syn keyword ngxDirective contained client_body_in_file_only -syn keyword ngxDirective contained client_body_in_single_buffer -syn keyword ngxDirective contained client_body_temp_path -syn keyword ngxDirective contained client_body_timeout -syn keyword ngxDirective contained client_header_buffer_size -syn keyword ngxDirective contained client_header_timeout -syn keyword ngxDirective contained client_max_body_size -syn keyword ngxDirective contained connection_pool_size -syn keyword ngxDirective contained create_full_put_path -syn keyword ngxDirective contained daemon -syn keyword ngxDirective contained dav_access -syn keyword ngxDirective contained dav_methods -syn keyword ngxDirective contained debug_connection -syn keyword ngxDirective contained debug_points -syn keyword ngxDirective contained default_type -syn keyword ngxDirective contained degradation -syn keyword ngxDirective contained degrade -syn keyword ngxDirective contained deny -syn keyword ngxDirective contained devpoll_changes -syn keyword ngxDirective contained devpoll_events -syn keyword ngxDirective contained directio -syn keyword ngxDirective contained directio_alignment -syn keyword ngxDirective contained disable_symlinks -syn keyword ngxDirective contained empty_gif -syn keyword ngxDirective contained env -syn keyword ngxDirective contained epoll_events -syn keyword ngxDirective contained error_log -syn keyword ngxDirective contained etag -syn keyword ngxDirective contained eventport_events -syn keyword ngxDirective contained expires -syn keyword ngxDirective contained f4f -syn keyword ngxDirective contained f4f_buffer_size -syn keyword ngxDirective contained fastcgi_bind -syn keyword ngxDirective contained fastcgi_buffer_size -syn keyword ngxDirective contained fastcgi_buffering -syn keyword ngxDirective contained fastcgi_buffers -syn keyword ngxDirective contained fastcgi_busy_buffers_size -syn keyword ngxDirective contained fastcgi_cache -syn keyword ngxDirective contained fastcgi_cache_background_update -syn keyword ngxDirective contained fastcgi_cache_bypass -syn keyword ngxDirective contained fastcgi_cache_key -syn keyword ngxDirective contained fastcgi_cache_lock -syn keyword ngxDirective contained fastcgi_cache_lock_age -syn keyword ngxDirective contained fastcgi_cache_lock_timeout -syn keyword ngxDirective contained fastcgi_cache_max_range_offset -syn keyword ngxDirective contained fastcgi_cache_methods -syn keyword ngxDirective contained fastcgi_cache_min_uses -syn keyword ngxDirective contained fastcgi_cache_path -syn keyword ngxDirective contained fastcgi_cache_purge -syn keyword ngxDirective contained fastcgi_cache_revalidate -syn keyword ngxDirective contained fastcgi_cache_use_stale -syn keyword ngxDirective contained fastcgi_cache_valid -syn keyword ngxDirective contained fastcgi_catch_stderr -syn keyword ngxDirective contained fastcgi_connect_timeout -syn keyword ngxDirective contained fastcgi_force_ranges -syn keyword ngxDirective contained fastcgi_hide_header -syn keyword ngxDirective contained fastcgi_ignore_client_abort -syn keyword ngxDirective contained fastcgi_ignore_headers -syn keyword ngxDirective contained fastcgi_index -syn keyword ngxDirective contained fastcgi_intercept_errors -syn keyword ngxDirective contained fastcgi_keep_conn -syn keyword ngxDirective contained fastcgi_limit_rate -syn keyword ngxDirective contained fastcgi_max_temp_file_size -syn keyword ngxDirective contained fastcgi_next_upstream -syn keyword ngxDirective contained fastcgi_next_upstream_timeout -syn keyword ngxDirective contained fastcgi_next_upstream_tries -syn keyword ngxDirective contained fastcgi_no_cache -syn keyword ngxDirective contained fastcgi_param -syn keyword ngxDirective contained fastcgi_pass_header -syn keyword ngxDirective contained fastcgi_pass_request_body -syn keyword ngxDirective contained fastcgi_pass_request_headers -syn keyword ngxDirective contained fastcgi_read_timeout -syn keyword ngxDirective contained fastcgi_request_buffering -syn keyword ngxDirective contained fastcgi_send_lowat -syn keyword ngxDirective contained fastcgi_send_timeout -syn keyword ngxDirective contained fastcgi_socket_keepalive -syn keyword ngxDirective contained fastcgi_split_path_info -syn keyword ngxDirective contained fastcgi_store -syn keyword ngxDirective contained fastcgi_store_access -syn keyword ngxDirective contained fastcgi_temp_file_write_size -syn keyword ngxDirective contained fastcgi_temp_path -syn keyword ngxDirective contained flv -syn keyword ngxDirective contained geoip_city -syn keyword ngxDirective contained geoip_country -syn keyword ngxDirective contained geoip_org -syn keyword ngxDirective contained geoip_proxy -syn keyword ngxDirective contained geoip_proxy_recursive -syn keyword ngxDirective contained google_perftools_profiles -syn keyword ngxDirective contained grpc_bind -syn keyword ngxDirective contained grpc_buffer_size -syn keyword ngxDirective contained grpc_connect_timeout -syn keyword ngxDirective contained grpc_hide_header -syn keyword ngxDirective contained grpc_ignore_headers -syn keyword ngxDirective contained grpc_intercept_errors -syn keyword ngxDirective contained grpc_next_upstream -syn keyword ngxDirective contained grpc_next_upstream_timeout -syn keyword ngxDirective contained grpc_next_upstream_tries -syn keyword ngxDirective contained grpc_pass -syn keyword ngxDirective contained grpc_pass_header -syn keyword ngxDirective contained grpc_read_timeout -syn keyword ngxDirective contained grpc_send_timeout -syn keyword ngxDirective contained grpc_set_header -syn keyword ngxDirective contained grpc_socket_keepalive -syn keyword ngxDirective contained grpc_ssl_certificate -syn keyword ngxDirective contained grpc_ssl_certificate_key -syn keyword ngxDirective contained grpc_ssl_ciphers -syn keyword ngxDirective contained grpc_ssl_crl -syn keyword ngxDirective contained grpc_ssl_name -syn keyword ngxDirective contained grpc_ssl_password_file -syn keyword ngxDirective contained grpc_ssl_protocols -syn keyword ngxDirective contained grpc_ssl_server_name -syn keyword ngxDirective contained grpc_ssl_session_reuse -syn keyword ngxDirective contained grpc_ssl_trusted_certificate -syn keyword ngxDirective contained grpc_ssl_verify -syn keyword ngxDirective contained grpc_ssl_verify_depth -syn keyword ngxDirective contained gunzip -syn keyword ngxDirective contained gunzip_buffers -syn keyword ngxDirective contained gzip -syn keyword ngxDirective contained gzip_buffers -syn keyword ngxDirective contained gzip_comp_level -syn keyword ngxDirective contained gzip_disable -syn keyword ngxDirective contained gzip_hash -syn keyword ngxDirective contained gzip_http_version -syn keyword ngxDirective contained gzip_min_length -syn keyword ngxDirective contained gzip_no_buffer -syn keyword ngxDirective contained gzip_proxied -syn keyword ngxDirective contained gzip_static -syn keyword ngxDirective contained gzip_types -syn keyword ngxDirective contained gzip_vary -syn keyword ngxDirective contained gzip_window -syn keyword ngxDirective contained hash -syn keyword ngxDirective contained health_check -syn keyword ngxDirective contained health_check_timeout -syn keyword ngxDirective contained hls -syn keyword ngxDirective contained hls_buffers -syn keyword ngxDirective contained hls_forward_args -syn keyword ngxDirective contained hls_fragment -syn keyword ngxDirective contained hls_mp4_buffer_size -syn keyword ngxDirective contained hls_mp4_max_buffer_size -syn keyword ngxDirective contained http2_body_preread_size -syn keyword ngxDirective contained http2_chunk_size -syn keyword ngxDirective contained http2_idle_timeout -syn keyword ngxDirective contained http2_max_concurrent_pushes -syn keyword ngxDirective contained http2_max_concurrent_streams -syn keyword ngxDirective contained http2_max_field_size -syn keyword ngxDirective contained http2_max_header_size -syn keyword ngxDirective contained http2_max_requests -syn keyword ngxDirective contained http2_pool_size -syn keyword ngxDirective contained http2_push -syn keyword ngxDirective contained http2_push_preload -syn keyword ngxDirective contained http2_recv_buffer_size -syn keyword ngxDirective contained http2_recv_timeout -syn keyword ngxDirective contained http2_streams_index_size -syn keyword ngxDirective contained if_modified_since -syn keyword ngxDirective contained ignore_invalid_headers -syn keyword ngxDirective contained image_filter -syn keyword ngxDirective contained image_filter_buffer -syn keyword ngxDirective contained image_filter_interlace -syn keyword ngxDirective contained image_filter_jpeg_quality -syn keyword ngxDirective contained image_filter_sharpen -syn keyword ngxDirective contained image_filter_transparency -syn keyword ngxDirective contained image_filter_webp_quality -syn keyword ngxDirective contained imap_auth -syn keyword ngxDirective contained imap_capabilities -syn keyword ngxDirective contained imap_client_buffer -syn keyword ngxDirective contained index -syn keyword ngxDirective contained iocp_threads -syn keyword ngxDirective contained ip_hash -syn keyword ngxDirective contained js_access -syn keyword ngxDirective contained js_content -syn keyword ngxDirective contained js_filter -syn keyword ngxDirective contained js_include -syn keyword ngxDirective contained js_path -syn keyword ngxDirective contained js_preread -syn keyword ngxDirective contained js_set -syn keyword ngxDirective contained keepalive -syn keyword ngxDirective contained keepalive_disable -syn keyword ngxDirective contained keepalive_requests -syn keyword ngxDirective contained keepalive_timeout -syn keyword ngxDirective contained keyval -syn keyword ngxDirective contained keyval_zone -syn keyword ngxDirective contained kqueue_changes -syn keyword ngxDirective contained kqueue_events -syn keyword ngxDirective contained large_client_header_buffers -syn keyword ngxDirective contained least_conn -syn keyword ngxDirective contained least_time -syn keyword ngxDirective contained limit_conn -syn keyword ngxDirective contained limit_conn_log_level -syn keyword ngxDirective contained limit_conn_status -syn keyword ngxDirective contained limit_conn_zone -syn keyword ngxDirective contained limit_rate -syn keyword ngxDirective contained limit_rate_after -syn keyword ngxDirective contained limit_req -syn keyword ngxDirective contained limit_req_dry_run -syn keyword ngxDirective contained limit_req_log_level -syn keyword ngxDirective contained limit_req_status -syn keyword ngxDirective contained limit_req_zone -syn keyword ngxDirective contained lingering_close -syn keyword ngxDirective contained lingering_time -syn keyword ngxDirective contained lingering_timeout -syn keyword ngxDirective contained load_module -syn keyword ngxDirective contained lock_file -syn keyword ngxDirective contained log_format -syn keyword ngxDirective contained log_not_found -syn keyword ngxDirective contained log_subrequest -syn keyword ngxDirective contained map_hash_bucket_size -syn keyword ngxDirective contained map_hash_max_size -syn keyword ngxDirective contained master_process -syn keyword ngxDirective contained max_ranges -syn keyword ngxDirective contained memcached_bind -syn keyword ngxDirective contained memcached_buffer_size -syn keyword ngxDirective contained memcached_connect_timeout -syn keyword ngxDirective contained memcached_force_ranges -syn keyword ngxDirective contained memcached_gzip_flag -syn keyword ngxDirective contained memcached_next_upstream -syn keyword ngxDirective contained memcached_next_upstream_timeout -syn keyword ngxDirective contained memcached_next_upstream_tries -syn keyword ngxDirective contained memcached_read_timeout -syn keyword ngxDirective contained memcached_send_timeout -syn keyword ngxDirective contained memcached_socket_keepalive -syn keyword ngxDirective contained merge_slashes -syn keyword ngxDirective contained min_delete_depth -syn keyword ngxDirective contained mirror -syn keyword ngxDirective contained mirror_request_body -syn keyword ngxDirective contained modern_browser -syn keyword ngxDirective contained modern_browser_value -syn keyword ngxDirective contained mp4 -syn keyword ngxDirective contained mp4_buffer_size -syn keyword ngxDirective contained mp4_limit_rate -syn keyword ngxDirective contained mp4_limit_rate_after -syn keyword ngxDirective contained mp4_max_buffer_size -syn keyword ngxDirective contained msie_padding -syn keyword ngxDirective contained msie_refresh -syn keyword ngxDirective contained multi_accept -syn keyword ngxDirective contained ntlm -syn keyword ngxDirective contained open_file_cache -syn keyword ngxDirective contained open_file_cache_errors -syn keyword ngxDirective contained open_file_cache_events -syn keyword ngxDirective contained open_file_cache_min_uses -syn keyword ngxDirective contained open_file_cache_valid -syn keyword ngxDirective contained open_log_file_cache -syn keyword ngxDirective contained output_buffers -syn keyword ngxDirective contained override_charset -syn keyword ngxDirective contained pcre_jit -syn keyword ngxDirective contained perl -syn keyword ngxDirective contained perl_modules -syn keyword ngxDirective contained perl_require -syn keyword ngxDirective contained perl_set -syn keyword ngxDirective contained pid -syn keyword ngxDirective contained pop3_auth -syn keyword ngxDirective contained pop3_capabilities -syn keyword ngxDirective contained port_in_redirect -syn keyword ngxDirective contained post_acceptex -syn keyword ngxDirective contained postpone_gzipping -syn keyword ngxDirective contained postpone_output -syn keyword ngxDirective contained preread_buffer_size -syn keyword ngxDirective contained preread_timeout -syn keyword ngxDirective contained protocol -syn keyword ngxDirective contained proxy -syn keyword ngxDirective contained proxy_bind -syn keyword ngxDirective contained proxy_buffer -syn keyword ngxDirective contained proxy_buffer_size -syn keyword ngxDirective contained proxy_buffering -syn keyword ngxDirective contained proxy_buffers -syn keyword ngxDirective contained proxy_busy_buffers_size -syn keyword ngxDirective contained proxy_cache -syn keyword ngxDirective contained proxy_cache_background_update -syn keyword ngxDirective contained proxy_cache_bypass -syn keyword ngxDirective contained proxy_cache_convert_head -syn keyword ngxDirective contained proxy_cache_key -syn keyword ngxDirective contained proxy_cache_lock -syn keyword ngxDirective contained proxy_cache_lock_age -syn keyword ngxDirective contained proxy_cache_lock_timeout -syn keyword ngxDirective contained proxy_cache_max_range_offset -syn keyword ngxDirective contained proxy_cache_methods -syn keyword ngxDirective contained proxy_cache_min_uses -syn keyword ngxDirective contained proxy_cache_path -syn keyword ngxDirective contained proxy_cache_purge -syn keyword ngxDirective contained proxy_cache_revalidate -syn keyword ngxDirective contained proxy_cache_use_stale -syn keyword ngxDirective contained proxy_cache_valid -syn keyword ngxDirective contained proxy_connect_timeout -syn keyword ngxDirective contained proxy_cookie_domain -syn keyword ngxDirective contained proxy_cookie_path -syn keyword ngxDirective contained proxy_download_rate -syn keyword ngxDirective contained proxy_force_ranges -syn keyword ngxDirective contained proxy_headers_hash_bucket_size -syn keyword ngxDirective contained proxy_headers_hash_max_size -syn keyword ngxDirective contained proxy_hide_header -syn keyword ngxDirective contained proxy_http_version -syn keyword ngxDirective contained proxy_ignore_client_abort -syn keyword ngxDirective contained proxy_ignore_headers -syn keyword ngxDirective contained proxy_intercept_errors -syn keyword ngxDirective contained proxy_limit_rate -syn keyword ngxDirective contained proxy_max_temp_file_size -syn keyword ngxDirective contained proxy_method -syn keyword ngxDirective contained proxy_next_upstream -syn keyword ngxDirective contained proxy_next_upstream_timeout -syn keyword ngxDirective contained proxy_next_upstream_tries -syn keyword ngxDirective contained proxy_no_cache -syn keyword ngxDirective contained proxy_pass_error_message -syn keyword ngxDirective contained proxy_pass_header -syn keyword ngxDirective contained proxy_pass_request_body -syn keyword ngxDirective contained proxy_pass_request_headers -syn keyword ngxDirective contained proxy_protocol -syn keyword ngxDirective contained proxy_protocol_timeout -syn keyword ngxDirective contained proxy_read_timeout -syn keyword ngxDirective contained proxy_redirect -syn keyword ngxDirective contained proxy_request_buffering -syn keyword ngxDirective contained proxy_requests -syn keyword ngxDirective contained proxy_responses -syn keyword ngxDirective contained proxy_send_lowat -syn keyword ngxDirective contained proxy_send_timeout -syn keyword ngxDirective contained proxy_session_drop -syn keyword ngxDirective contained proxy_set_body -syn keyword ngxDirective contained proxy_set_header -syn keyword ngxDirective contained proxy_socket_keepalive -syn keyword ngxDirective contained proxy_ssl -syn keyword ngxDirective contained proxy_ssl_certificate -syn keyword ngxDirective contained proxy_ssl_certificate_key -syn keyword ngxDirective contained proxy_ssl_ciphers -syn keyword ngxDirective contained proxy_ssl_crl -syn keyword ngxDirective contained proxy_ssl_name -syn keyword ngxDirective contained proxy_ssl_password_file -syn keyword ngxDirective contained proxy_ssl_protocols -syn keyword ngxDirective contained proxy_ssl_server_name -syn keyword ngxDirective contained proxy_ssl_session_reuse -syn keyword ngxDirective contained proxy_ssl_trusted_certificate -syn keyword ngxDirective contained proxy_ssl_verify -syn keyword ngxDirective contained proxy_ssl_verify_depth -syn keyword ngxDirective contained proxy_store -syn keyword ngxDirective contained proxy_store_access -syn keyword ngxDirective contained proxy_temp_file_write_size -syn keyword ngxDirective contained proxy_temp_path -syn keyword ngxDirective contained proxy_timeout -syn keyword ngxDirective contained proxy_upload_rate -syn keyword ngxDirective contained queue -syn keyword ngxDirective contained random -syn keyword ngxDirective contained random_index -syn keyword ngxDirective contained read_ahead -syn keyword ngxDirective contained real_ip_header -syn keyword ngxDirective contained real_ip_recursive -syn keyword ngxDirective contained recursive_error_pages -syn keyword ngxDirective contained referer_hash_bucket_size -syn keyword ngxDirective contained referer_hash_max_size -syn keyword ngxDirective contained request_pool_size -syn keyword ngxDirective contained reset_timedout_connection -syn keyword ngxDirective contained resolver -syn keyword ngxDirective contained resolver_timeout -syn keyword ngxDirective contained rewrite_log -syn keyword ngxDirective contained satisfy -syn keyword ngxDirective contained scgi_bind -syn keyword ngxDirective contained scgi_buffer_size -syn keyword ngxDirective contained scgi_buffering -syn keyword ngxDirective contained scgi_buffers -syn keyword ngxDirective contained scgi_busy_buffers_size -syn keyword ngxDirective contained scgi_cache -syn keyword ngxDirective contained scgi_cache_background_update -syn keyword ngxDirective contained scgi_cache_bypass -syn keyword ngxDirective contained scgi_cache_key -syn keyword ngxDirective contained scgi_cache_lock -syn keyword ngxDirective contained scgi_cache_lock_age -syn keyword ngxDirective contained scgi_cache_lock_timeout -syn keyword ngxDirective contained scgi_cache_max_range_offset -syn keyword ngxDirective contained scgi_cache_methods -syn keyword ngxDirective contained scgi_cache_min_uses -syn keyword ngxDirective contained scgi_cache_path -syn keyword ngxDirective contained scgi_cache_purge -syn keyword ngxDirective contained scgi_cache_revalidate -syn keyword ngxDirective contained scgi_cache_use_stale -syn keyword ngxDirective contained scgi_cache_valid -syn keyword ngxDirective contained scgi_connect_timeout -syn keyword ngxDirective contained scgi_force_ranges -syn keyword ngxDirective contained scgi_hide_header -syn keyword ngxDirective contained scgi_ignore_client_abort -syn keyword ngxDirective contained scgi_ignore_headers -syn keyword ngxDirective contained scgi_intercept_errors -syn keyword ngxDirective contained scgi_limit_rate -syn keyword ngxDirective contained scgi_max_temp_file_size -syn keyword ngxDirective contained scgi_next_upstream -syn keyword ngxDirective contained scgi_next_upstream_timeout -syn keyword ngxDirective contained scgi_next_upstream_tries -syn keyword ngxDirective contained scgi_no_cache -syn keyword ngxDirective contained scgi_param -syn keyword ngxDirective contained scgi_pass_header -syn keyword ngxDirective contained scgi_pass_request_body -syn keyword ngxDirective contained scgi_pass_request_headers -syn keyword ngxDirective contained scgi_read_timeout -syn keyword ngxDirective contained scgi_request_buffering -syn keyword ngxDirective contained scgi_send_timeout -syn keyword ngxDirective contained scgi_socket_keepalive -syn keyword ngxDirective contained scgi_store -syn keyword ngxDirective contained scgi_store_access -syn keyword ngxDirective contained scgi_temp_file_write_size -syn keyword ngxDirective contained scgi_temp_path -syn keyword ngxDirective contained secure_link -syn keyword ngxDirective contained secure_link_md5 -syn keyword ngxDirective contained secure_link_secret -syn keyword ngxDirective contained send_lowat -syn keyword ngxDirective contained send_timeout -syn keyword ngxDirective contained sendfile -syn keyword ngxDirective contained sendfile_max_chunk -syn keyword ngxDirective contained server_name_in_redirect -syn keyword ngxDirective contained server_names_hash_bucket_size -syn keyword ngxDirective contained server_names_hash_max_size -syn keyword ngxDirective contained server_tokens -syn keyword ngxDirective contained session_log -syn keyword ngxDirective contained session_log_format -syn keyword ngxDirective contained session_log_zone -syn keyword ngxDirective contained set_real_ip_from -syn keyword ngxDirective contained slice -syn keyword ngxDirective contained smtp_auth -syn keyword ngxDirective contained smtp_capabilities -syn keyword ngxDirective contained smtp_client_buffer -syn keyword ngxDirective contained smtp_greeting_delay -syn keyword ngxDirective contained source_charset -syn keyword ngxDirective contained ssi -syn keyword ngxDirective contained ssi_ignore_recycled_buffers -syn keyword ngxDirective contained ssi_last_modified -syn keyword ngxDirective contained ssi_min_file_chunk -syn keyword ngxDirective contained ssi_silent_errors -syn keyword ngxDirective contained ssi_types -syn keyword ngxDirective contained ssi_value_length -syn keyword ngxDirective contained ssl_buffer_size -syn keyword ngxDirective contained ssl_certificate -syn keyword ngxDirective contained ssl_certificate_key -syn keyword ngxDirective contained ssl_ciphers -syn keyword ngxDirective contained ssl_client_certificate -syn keyword ngxDirective contained ssl_crl -syn keyword ngxDirective contained ssl_dhparam -syn keyword ngxDirective contained ssl_early_data -syn keyword ngxDirective contained ssl_ecdh_curve -syn keyword ngxDirective contained ssl_engine -syn keyword ngxDirective contained ssl_handshake_timeout -syn keyword ngxDirective contained ssl_password_file -syn keyword ngxDirective contained ssl_prefer_server_ciphers -syn keyword ngxDirective contained ssl_preread -syn keyword ngxDirective contained ssl_protocols -syn keyword ngxDirective contained ssl_session_cache -syn keyword ngxDirective contained ssl_session_ticket_key -syn keyword ngxDirective contained ssl_session_tickets -syn keyword ngxDirective contained ssl_session_timeout -syn keyword ngxDirective contained ssl_stapling -syn keyword ngxDirective contained ssl_stapling_file -syn keyword ngxDirective contained ssl_stapling_responder -syn keyword ngxDirective contained ssl_stapling_verify -syn keyword ngxDirective contained ssl_trusted_certificate -syn keyword ngxDirective contained ssl_verify_client -syn keyword ngxDirective contained ssl_verify_depth -syn keyword ngxDirective contained starttls -syn keyword ngxDirective contained state -syn keyword ngxDirective contained status -syn keyword ngxDirective contained status_format -syn keyword ngxDirective contained status_zone -syn keyword ngxDirective contained sticky -syn keyword ngxDirective contained sticky_cookie_insert -syn keyword ngxDirective contained stub_status -syn keyword ngxDirective contained sub_filter -syn keyword ngxDirective contained sub_filter_last_modified -syn keyword ngxDirective contained sub_filter_once -syn keyword ngxDirective contained sub_filter_types -syn keyword ngxDirective contained subrequest_output_buffer_size -syn keyword ngxDirective contained tcp_nodelay -syn keyword ngxDirective contained tcp_nopush -syn keyword ngxDirective contained thread_pool -syn keyword ngxDirective contained timeout -syn keyword ngxDirective contained timer_resolution -syn keyword ngxDirective contained types_hash_bucket_size -syn keyword ngxDirective contained types_hash_max_size -syn keyword ngxDirective contained underscores_in_headers -syn keyword ngxDirective contained uninitialized_variable_warn -syn keyword ngxDirective contained use -syn keyword ngxDirective contained user -syn keyword ngxDirective contained userid -syn keyword ngxDirective contained userid_domain -syn keyword ngxDirective contained userid_expires -syn keyword ngxDirective contained userid_mark -syn keyword ngxDirective contained userid_name -syn keyword ngxDirective contained userid_p3p -syn keyword ngxDirective contained userid_path -syn keyword ngxDirective contained userid_service -syn keyword ngxDirective contained uwsgi_bind -syn keyword ngxDirective contained uwsgi_buffer_size -syn keyword ngxDirective contained uwsgi_buffering -syn keyword ngxDirective contained uwsgi_buffers -syn keyword ngxDirective contained uwsgi_busy_buffers_size -syn keyword ngxDirective contained uwsgi_cache -syn keyword ngxDirective contained uwsgi_cache_background_update -syn keyword ngxDirective contained uwsgi_cache_bypass -syn keyword ngxDirective contained uwsgi_cache_key -syn keyword ngxDirective contained uwsgi_cache_lock -syn keyword ngxDirective contained uwsgi_cache_lock_age -syn keyword ngxDirective contained uwsgi_cache_lock_timeout -syn keyword ngxDirective contained uwsgi_cache_max_range_offset -syn keyword ngxDirective contained uwsgi_cache_methods -syn keyword ngxDirective contained uwsgi_cache_min_uses -syn keyword ngxDirective contained uwsgi_cache_path -syn keyword ngxDirective contained uwsgi_cache_purge -syn keyword ngxDirective contained uwsgi_cache_revalidate -syn keyword ngxDirective contained uwsgi_cache_use_stale -syn keyword ngxDirective contained uwsgi_cache_valid -syn keyword ngxDirective contained uwsgi_connect_timeout -syn keyword ngxDirective contained uwsgi_force_ranges -syn keyword ngxDirective contained uwsgi_hide_header -syn keyword ngxDirective contained uwsgi_ignore_client_abort -syn keyword ngxDirective contained uwsgi_ignore_headers -syn keyword ngxDirective contained uwsgi_intercept_errors -syn keyword ngxDirective contained uwsgi_limit_rate -syn keyword ngxDirective contained uwsgi_max_temp_file_size -syn keyword ngxDirective contained uwsgi_modifier1 -syn keyword ngxDirective contained uwsgi_modifier2 -syn keyword ngxDirective contained uwsgi_next_upstream -syn keyword ngxDirective contained uwsgi_next_upstream_timeout -syn keyword ngxDirective contained uwsgi_next_upstream_tries -syn keyword ngxDirective contained uwsgi_no_cache -syn keyword ngxDirective contained uwsgi_param -syn keyword ngxDirective contained uwsgi_pass_header -syn keyword ngxDirective contained uwsgi_pass_request_body -syn keyword ngxDirective contained uwsgi_pass_request_headers -syn keyword ngxDirective contained uwsgi_read_timeout -syn keyword ngxDirective contained uwsgi_request_buffering -syn keyword ngxDirective contained uwsgi_send_timeout -syn keyword ngxDirective contained uwsgi_socket_keepalive -syn keyword ngxDirective contained uwsgi_ssl_certificate -syn keyword ngxDirective contained uwsgi_ssl_certificate_key -syn keyword ngxDirective contained uwsgi_ssl_ciphers -syn keyword ngxDirective contained uwsgi_ssl_crl -syn keyword ngxDirective contained uwsgi_ssl_name -syn keyword ngxDirective contained uwsgi_ssl_password_file -syn keyword ngxDirective contained uwsgi_ssl_protocols -syn keyword ngxDirective contained uwsgi_ssl_server_name -syn keyword ngxDirective contained uwsgi_ssl_session_reuse -syn keyword ngxDirective contained uwsgi_ssl_trusted_certificate -syn keyword ngxDirective contained uwsgi_ssl_verify -syn keyword ngxDirective contained uwsgi_ssl_verify_depth -syn keyword ngxDirective contained uwsgi_store -syn keyword ngxDirective contained uwsgi_store_access -syn keyword ngxDirective contained uwsgi_string -syn keyword ngxDirective contained uwsgi_temp_file_write_size -syn keyword ngxDirective contained uwsgi_temp_path -syn keyword ngxDirective contained valid_referers -syn keyword ngxDirective contained variables_hash_bucket_size -syn keyword ngxDirective contained variables_hash_max_size -syn keyword ngxDirective contained worker_aio_requests -syn keyword ngxDirective contained worker_connections -syn keyword ngxDirective contained worker_cpu_affinity -syn keyword ngxDirective contained worker_priority -syn keyword ngxDirective contained worker_processes -syn keyword ngxDirective contained worker_rlimit_core -syn keyword ngxDirective contained worker_rlimit_nofile -syn keyword ngxDirective contained worker_shutdown_timeout -syn keyword ngxDirective contained working_directory -syn keyword ngxDirective contained xclient -syn keyword ngxDirective contained xml_entities -syn keyword ngxDirective contained xslt_last_modified -syn keyword ngxDirective contained xslt_param -syn keyword ngxDirective contained xslt_string_param -syn keyword ngxDirective contained xslt_stylesheet -syn keyword ngxDirective contained xslt_types -syn keyword ngxDirective contained zone -syn keyword ngxDirective contained zone_sync -syn keyword ngxDirective contained zone_sync_buffers -syn keyword ngxDirective contained zone_sync_connect_retry_interval -syn keyword ngxDirective contained zone_sync_connect_timeout -syn keyword ngxDirective contained zone_sync_interval -syn keyword ngxDirective contained zone_sync_recv_buffer_size -syn keyword ngxDirective contained zone_sync_server -syn keyword ngxDirective contained zone_sync_ssl -syn keyword ngxDirective contained zone_sync_ssl_certificate -syn keyword ngxDirective contained zone_sync_ssl_certificate_key -syn keyword ngxDirective contained zone_sync_ssl_ciphers -syn keyword ngxDirective contained zone_sync_ssl_crl -syn keyword ngxDirective contained zone_sync_ssl_name -syn keyword ngxDirective contained zone_sync_ssl_password_file -syn keyword ngxDirective contained zone_sync_ssl_protocols -syn keyword ngxDirective contained zone_sync_ssl_server_name -syn keyword ngxDirective contained zone_sync_ssl_trusted_certificate -syn keyword ngxDirective contained zone_sync_ssl_verify -syn keyword ngxDirective contained zone_sync_ssl_verify_depth -syn keyword ngxDirective contained zone_sync_timeout - -" 3rd party modules list taken from -" https://github.com/freebsd/freebsd-ports/blob/master/www/nginx-devel/Makefile -" ----------------------------------------------------------------------------- - -" Accept Language -" https://github.com/giom/nginx_accept_language_module -syn keyword ngxDirectiveThirdParty contained set_from_accept_language - -" Digest Authentication -" https://github.com/atomx/nginx-http-auth-digest -syn keyword ngxDirectiveThirdParty contained auth_digest -syn keyword ngxDirectiveThirdParty contained auth_digest_drop_time -syn keyword ngxDirectiveThirdParty contained auth_digest_evasion_time -syn keyword ngxDirectiveThirdParty contained auth_digest_expires -syn keyword ngxDirectiveThirdParty contained auth_digest_maxtries -syn keyword ngxDirectiveThirdParty contained auth_digest_replays -syn keyword ngxDirectiveThirdParty contained auth_digest_shm_size -syn keyword ngxDirectiveThirdParty contained auth_digest_timeout -syn keyword ngxDirectiveThirdParty contained auth_digest_user_file - -" SPNEGO Authentication -" https://github.com/stnoonan/spnego-http-auth-nginx-module -syn keyword ngxDirectiveThirdParty contained auth_gss -syn keyword ngxDirectiveThirdParty contained auth_gss_allow_basic_fallback -syn keyword ngxDirectiveThirdParty contained auth_gss_authorized_principal -syn keyword ngxDirectiveThirdParty contained auth_gss_force_realm -syn keyword ngxDirectiveThirdParty contained auth_gss_format_full -syn keyword ngxDirectiveThirdParty contained auth_gss_keytab -syn keyword ngxDirectiveThirdParty contained auth_gss_realm -syn keyword ngxDirectiveThirdParty contained auth_gss_service_name - -" LDAP Authentication -" https://github.com/kvspb/nginx-auth-ldap -syn keyword ngxDirectiveThirdParty contained auth_ldap -syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_enabled -syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_expiration_time -syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_size -syn keyword ngxDirectiveThirdParty contained auth_ldap_servers -syn keyword ngxDirectiveThirdParty contained auth_ldap_servers_size -syn keyword ngxDirectiveThirdParty contained ldap_server - -" PAM Authentication -" https://github.com/sto/ngx_http_auth_pam_module -syn keyword ngxDirectiveThirdParty contained auth_pam -syn keyword ngxDirectiveThirdParty contained auth_pam_service_name -syn keyword ngxDirectiveThirdParty contained auth_pam_set_pam_env - -" AJP protocol proxy -" https://github.com/yaoweibin/nginx_ajp_module -syn keyword ngxDirectiveThirdParty contained ajp_buffer_size -syn keyword ngxDirectiveThirdParty contained ajp_buffers -syn keyword ngxDirectiveThirdParty contained ajp_busy_buffers_size -syn keyword ngxDirectiveThirdParty contained ajp_cache -syn keyword ngxDirectiveThirdParty contained ajp_cache_key -syn keyword ngxDirectiveThirdParty contained ajp_cache_lock -syn keyword ngxDirectiveThirdParty contained ajp_cache_lock_timeout -syn keyword ngxDirectiveThirdParty contained ajp_cache_methods -syn keyword ngxDirectiveThirdParty contained ajp_cache_min_uses -syn keyword ngxDirectiveThirdParty contained ajp_cache_path -syn keyword ngxDirectiveThirdParty contained ajp_cache_use_stale -syn keyword ngxDirectiveThirdParty contained ajp_cache_valid -syn keyword ngxDirectiveThirdParty contained ajp_connect_timeout -syn keyword ngxDirectiveThirdParty contained ajp_header_packet_buffer_size -syn keyword ngxDirectiveThirdParty contained ajp_hide_header -syn keyword ngxDirectiveThirdParty contained ajp_ignore_client_abort -syn keyword ngxDirectiveThirdParty contained ajp_ignore_headers -syn keyword ngxDirectiveThirdParty contained ajp_intercept_errors -syn keyword ngxDirectiveThirdParty contained ajp_keep_conn -syn keyword ngxDirectiveThirdParty contained ajp_max_data_packet_size -syn keyword ngxDirectiveThirdParty contained ajp_max_temp_file_size -syn keyword ngxDirectiveThirdParty contained ajp_next_upstream -syn keyword ngxDirectiveThirdParty contained ajp_pass -syn keyword ngxDirectiveThirdParty contained ajp_pass_header -syn keyword ngxDirectiveThirdParty contained ajp_pass_request_body -syn keyword ngxDirectiveThirdParty contained ajp_pass_request_headers -syn keyword ngxDirectiveThirdParty contained ajp_read_timeout -syn keyword ngxDirectiveThirdParty contained ajp_send_lowat -syn keyword ngxDirectiveThirdParty contained ajp_send_timeout -syn keyword ngxDirectiveThirdParty contained ajp_store -syn keyword ngxDirectiveThirdParty contained ajp_store_access -syn keyword ngxDirectiveThirdParty contained ajp_temp_file_write_size -syn keyword ngxDirectiveThirdParty contained ajp_temp_path -syn keyword ngxDirectiveThirdParty contained ajp_upstream_fail_timeout -syn keyword ngxDirectiveThirdParty contained ajp_upstream_max_fails - -" AWS proxy -" https://github.com/anomalizer/ngx_aws_auth -syn keyword ngxDirectiveThirdParty contained aws_access_key -syn keyword ngxDirectiveThirdParty contained aws_endpoint -syn keyword ngxDirectiveThirdParty contained aws_key_scope -syn keyword ngxDirectiveThirdParty contained aws_s3_bucket -syn keyword ngxDirectiveThirdParty contained aws_sign -syn keyword ngxDirectiveThirdParty contained aws_signing_key - -" embedding Clojure or Java or Groovy programs -" https://github.com/nginx-clojure/nginx-clojure -syn keyword ngxDirectiveThirdParty contained access_handler_code -syn keyword ngxDirectiveThirdParty contained access_handler_name -syn keyword ngxDirectiveThirdParty contained access_handler_property -syn keyword ngxDirectiveThirdParty contained access_handler_type -syn keyword ngxDirectiveThirdParty contained always_read_body -syn keyword ngxDirectiveThirdParty contained auto_upgrade_ws -syn keyword ngxDirectiveThirdParty contained body_filter_code -syn keyword ngxDirectiveThirdParty contained body_filter_name -syn keyword ngxDirectiveThirdParty contained body_filter_property -syn keyword ngxDirectiveThirdParty contained body_filter_type -syn keyword ngxDirectiveThirdParty contained content_handler_code -syn keyword ngxDirectiveThirdParty contained content_handler_name -syn keyword ngxDirectiveThirdParty contained content_handler_property -syn keyword ngxDirectiveThirdParty contained content_handler_type -syn keyword ngxDirectiveThirdParty contained handler_code -syn keyword ngxDirectiveThirdParty contained handler_name -syn keyword ngxDirectiveThirdParty contained handler_type -syn keyword ngxDirectiveThirdParty contained handlers_lazy_init -syn keyword ngxDirectiveThirdParty contained header_filter_code -syn keyword ngxDirectiveThirdParty contained header_filter_name -syn keyword ngxDirectiveThirdParty contained header_filter_property -syn keyword ngxDirectiveThirdParty contained header_filter_type -syn keyword ngxDirectiveThirdParty contained jvm_classpath -syn keyword ngxDirectiveThirdParty contained jvm_classpath_check -syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_code -syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_name -syn keyword ngxDirectiveThirdParty contained jvm_handler_type -syn keyword ngxDirectiveThirdParty contained jvm_init_handler_code -syn keyword ngxDirectiveThirdParty contained jvm_init_handler_name -syn keyword ngxDirectiveThirdParty contained jvm_options -syn keyword ngxDirectiveThirdParty contained jvm_path -syn keyword ngxDirectiveThirdParty contained jvm_var -syn keyword ngxDirectiveThirdParty contained jvm_workers -syn keyword ngxDirectiveThirdParty contained max_balanced_tcp_connections -syn keyword ngxDirectiveThirdParty contained rewrite_handler_code -syn keyword ngxDirectiveThirdParty contained rewrite_handler_name -syn keyword ngxDirectiveThirdParty contained rewrite_handler_property -syn keyword ngxDirectiveThirdParty contained rewrite_handler_type -syn keyword ngxDirectiveThirdParty contained shared_map -syn keyword ngxDirectiveThirdParty contained write_page_size - -" Certificate Transparency -" https://github.com/grahamedgecombe/nginx-ct -syn keyword ngxDirectiveThirdParty contained ssl_ct -syn keyword ngxDirectiveThirdParty contained ssl_ct_static_scts - -" ngx_echo -" https://github.com/openresty/echo-nginx-module -syn keyword ngxDirectiveThirdParty contained echo_abort_parent -syn keyword ngxDirectiveThirdParty contained echo_after_body -syn keyword ngxDirectiveThirdParty contained echo_before_body -syn keyword ngxDirectiveThirdParty contained echo_blocking_sleep -syn keyword ngxDirectiveThirdParty contained echo_end -syn keyword ngxDirectiveThirdParty contained echo_exec -syn keyword ngxDirectiveThirdParty contained echo_flush -syn keyword ngxDirectiveThirdParty contained echo_foreach_split -syn keyword ngxDirectiveThirdParty contained echo_location -syn keyword ngxDirectiveThirdParty contained echo_location_async -syn keyword ngxDirectiveThirdParty contained echo_read_request_body -syn keyword ngxDirectiveThirdParty contained echo_request_body -syn keyword ngxDirectiveThirdParty contained echo_reset_timer -syn keyword ngxDirectiveThirdParty contained echo_status -syn keyword ngxDirectiveThirdParty contained echo_subrequest -syn keyword ngxDirectiveThirdParty contained echo_subrequest_async - -" FastDFS -" https://github.com/happyfish100/fastdfs-nginx-module -syn keyword ngxDirectiveThirdParty contained ngx_fastdfs_module - -" ngx_headers_more -" https://github.com/openresty/headers-more-nginx-module -syn keyword ngxDirectiveThirdParty contained more_clear_headers -syn keyword ngxDirectiveThirdParty contained more_clear_input_headers -syn keyword ngxDirectiveThirdParty contained more_set_headers -syn keyword ngxDirectiveThirdParty contained more_set_input_headers - -" NGINX WebDAV missing commands support (PROPFIND & OPTIONS) -" https://github.com/arut/nginx-dav-ext-module -syn keyword ngxDirectiveThirdParty contained dav_ext_lock -syn keyword ngxDirectiveThirdParty contained dav_ext_lock_zone -syn keyword ngxDirectiveThirdParty contained dav_ext_methods - -" ngx_eval -" https://github.com/openresty/nginx-eval-module -syn keyword ngxDirectiveThirdParty contained eval -syn keyword ngxDirectiveThirdParty contained eval_buffer_size -syn keyword ngxDirectiveThirdParty contained eval_escalate -syn keyword ngxDirectiveThirdParty contained eval_override_content_type -syn keyword ngxDirectiveThirdParty contained eval_subrequest_in_memory - -" Fancy Index -" https://github.com/aperezdc/ngx-fancyindex -syn keyword ngxDirectiveThirdParty contained fancyindex -syn keyword ngxDirectiveThirdParty contained fancyindex_css_href -syn keyword ngxDirectiveThirdParty contained fancyindex_default_sort -syn keyword ngxDirectiveThirdParty contained fancyindex_directories_first -syn keyword ngxDirectiveThirdParty contained fancyindex_exact_size -syn keyword ngxDirectiveThirdParty contained fancyindex_footer -syn keyword ngxDirectiveThirdParty contained fancyindex_header -syn keyword ngxDirectiveThirdParty contained fancyindex_hide_parent_dir -syn keyword ngxDirectiveThirdParty contained fancyindex_hide_symlinks -syn keyword ngxDirectiveThirdParty contained fancyindex_ignore -syn keyword ngxDirectiveThirdParty contained fancyindex_localtime -syn keyword ngxDirectiveThirdParty contained fancyindex_name_length -syn keyword ngxDirectiveThirdParty contained fancyindex_show_path -syn keyword ngxDirectiveThirdParty contained fancyindex_time_format - -" Footer filter -" https://github.com/alibaba/nginx-http-footer-filter -syn keyword ngxDirectiveThirdParty contained footer -syn keyword ngxDirectiveThirdParty contained footer_types - -" ngx_http_geoip2_module -" https://github.com/leev/ngx_http_geoip2_module -syn keyword ngxDirectiveThirdParty contained geoip2 -syn keyword ngxDirectiveThirdParty contained geoip2_proxy -syn keyword ngxDirectiveThirdParty contained geoip2_proxy_recursive - -" A version of the Nginx HTTP stub status module that outputs in JSON format -" https://github.com/nginx-modules/nginx-json-status-module -syn keyword ngxDirectiveThirdParty contained json_status -syn keyword ngxDirectiveThirdParty contained json_status_type - -" MogileFS client for nginx -" https://github.com/vkholodkov/nginx-mogilefs-module -syn keyword ngxDirectiveThirdParty contained mogilefs_class -syn keyword ngxDirectiveThirdParty contained mogilefs_connect_timeout -syn keyword ngxDirectiveThirdParty contained mogilefs_domain -syn keyword ngxDirectiveThirdParty contained mogilefs_methods -syn keyword ngxDirectiveThirdParty contained mogilefs_noverify -syn keyword ngxDirectiveThirdParty contained mogilefs_pass -syn keyword ngxDirectiveThirdParty contained mogilefs_read_timeout -syn keyword ngxDirectiveThirdParty contained mogilefs_send_timeout -syn keyword ngxDirectiveThirdParty contained mogilefs_tracker - -" Ancient nginx plugin; probably not useful to anyone -" https://github.com/kr/nginx-notice -syn keyword ngxDirectiveThirdParty contained notice -syn keyword ngxDirectiveThirdParty contained notice_type - -" nchan -" https://github.com/slact/nchan -syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_credentials -syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_origin -syn keyword ngxDirectiveThirdParty contained nchan_authorize_request -syn keyword ngxDirectiveThirdParty contained nchan_benchmark -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_channels -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_message_padding_bytes -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_messages_per_channel_per_minute -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_publisher_distribution -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscriber_distribution -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscribers_per_channel -syn keyword ngxDirectiveThirdParty contained nchan_benchmark_time -syn keyword ngxDirectiveThirdParty contained nchan_channel_event_string -syn keyword ngxDirectiveThirdParty contained nchan_channel_events_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_channel_group -syn keyword ngxDirectiveThirdParty contained nchan_channel_group_accounting -syn keyword ngxDirectiveThirdParty contained nchan_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_channel_id_split_delimiter -syn keyword ngxDirectiveThirdParty contained nchan_channel_timeout -syn keyword ngxDirectiveThirdParty contained nchan_deflate_message_for_websocket -syn keyword ngxDirectiveThirdParty contained nchan_eventsource_event -syn keyword ngxDirectiveThirdParty contained nchan_group_location -syn keyword ngxDirectiveThirdParty contained nchan_group_max_channels -syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages -syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_disk -syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_memory -syn keyword ngxDirectiveThirdParty contained nchan_group_max_subscribers -syn keyword ngxDirectiveThirdParty contained nchan_longpoll_multipart_response -syn keyword ngxDirectiveThirdParty contained nchan_max_channel_id_length -syn keyword ngxDirectiveThirdParty contained nchan_max_channel_subscribers -syn keyword ngxDirectiveThirdParty contained nchan_max_reserved_memory -syn keyword ngxDirectiveThirdParty contained nchan_message_buffer_length -syn keyword ngxDirectiveThirdParty contained nchan_message_max_buffer_length -syn keyword ngxDirectiveThirdParty contained nchan_message_temp_path -syn keyword ngxDirectiveThirdParty contained nchan_message_timeout -syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_level -syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_memlevel -syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_strategy -syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_window -syn keyword ngxDirectiveThirdParty contained nchan_pub_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_publisher -syn keyword ngxDirectiveThirdParty contained nchan_publisher_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_publisher_location -syn keyword ngxDirectiveThirdParty contained nchan_publisher_upstream_request -syn keyword ngxDirectiveThirdParty contained nchan_pubsub -syn keyword ngxDirectiveThirdParty contained nchan_pubsub_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_pubsub_location -syn keyword ngxDirectiveThirdParty contained nchan_redis_connect_timeout -syn keyword ngxDirectiveThirdParty contained nchan_redis_fakesub_timer_interval -syn keyword ngxDirectiveThirdParty contained nchan_redis_idle_channel_cache_timeout -syn keyword ngxDirectiveThirdParty contained nchan_redis_namespace -syn keyword ngxDirectiveThirdParty contained nchan_redis_nostore_fastpublish -syn keyword ngxDirectiveThirdParty contained nchan_redis_optimize_target -syn keyword ngxDirectiveThirdParty contained nchan_redis_pass -syn keyword ngxDirectiveThirdParty contained nchan_redis_pass_inheritable -syn keyword ngxDirectiveThirdParty contained nchan_redis_ping_interval -syn keyword ngxDirectiveThirdParty contained nchan_redis_publish_msgpacked_max_size -syn keyword ngxDirectiveThirdParty contained nchan_redis_server -syn keyword ngxDirectiveThirdParty contained nchan_redis_storage_mode -syn keyword ngxDirectiveThirdParty contained nchan_redis_subscribe_weights -syn keyword ngxDirectiveThirdParty contained nchan_redis_url -syn keyword ngxDirectiveThirdParty contained nchan_redis_wait_after_connecting -syn keyword ngxDirectiveThirdParty contained nchan_shared_memory_size -syn keyword ngxDirectiveThirdParty contained nchan_storage_engine -syn keyword ngxDirectiveThirdParty contained nchan_store_messages -syn keyword ngxDirectiveThirdParty contained nchan_stub_status -syn keyword ngxDirectiveThirdParty contained nchan_sub_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_subscribe_existing_channels_only -syn keyword ngxDirectiveThirdParty contained nchan_subscribe_request -syn keyword ngxDirectiveThirdParty contained nchan_subscriber -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_channel_id -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_compound_etag_message_id -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_first_message -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_http_raw_stream_separator -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_last_message_id -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_location -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_message_id_custom_etag_header -syn keyword ngxDirectiveThirdParty contained nchan_subscriber_timeout -syn keyword ngxDirectiveThirdParty contained nchan_unsubscribe_request -syn keyword ngxDirectiveThirdParty contained nchan_use_redis -syn keyword ngxDirectiveThirdParty contained nchan_websocket_client_heartbeat -syn keyword ngxDirectiveThirdParty contained nchan_websocket_ping_interval -syn keyword ngxDirectiveThirdParty contained push_authorized_channels_only -syn keyword ngxDirectiveThirdParty contained push_channel_group -syn keyword ngxDirectiveThirdParty contained push_channel_timeout -syn keyword ngxDirectiveThirdParty contained push_max_channel_id_length -syn keyword ngxDirectiveThirdParty contained push_max_channel_subscribers -syn keyword ngxDirectiveThirdParty contained push_max_message_buffer_length -syn keyword ngxDirectiveThirdParty contained push_max_reserved_memory -syn keyword ngxDirectiveThirdParty contained push_message_buffer_length -syn keyword ngxDirectiveThirdParty contained push_message_timeout -syn keyword ngxDirectiveThirdParty contained push_min_message_buffer_length -syn keyword ngxDirectiveThirdParty contained push_publisher -syn keyword ngxDirectiveThirdParty contained push_store_messages -syn keyword ngxDirectiveThirdParty contained push_subscriber -syn keyword ngxDirectiveThirdParty contained push_subscriber_concurrency -syn keyword ngxDirectiveThirdParty contained push_subscriber_timeout - -" Push Stream -" https://github.com/wandenberg/nginx-push-stream-module -syn keyword ngxDirectiveThirdParty contained push_stream_allow_connections_to_events_channel -syn keyword ngxDirectiveThirdParty contained push_stream_allowed_origins -syn keyword ngxDirectiveThirdParty contained push_stream_authorized_channels_only -syn keyword ngxDirectiveThirdParty contained push_stream_channel_deleted_message_text -syn keyword ngxDirectiveThirdParty contained push_stream_channel_inactivity_time -syn keyword ngxDirectiveThirdParty contained push_stream_channel_info_on_publish -syn keyword ngxDirectiveThirdParty contained push_stream_channels_path -syn keyword ngxDirectiveThirdParty contained push_stream_channels_statistics -syn keyword ngxDirectiveThirdParty contained push_stream_events_channel_id -syn keyword ngxDirectiveThirdParty contained push_stream_footer_template -syn keyword ngxDirectiveThirdParty contained push_stream_header_template -syn keyword ngxDirectiveThirdParty contained push_stream_header_template_file -syn keyword ngxDirectiveThirdParty contained push_stream_last_event_id -syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_tag -syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_time -syn keyword ngxDirectiveThirdParty contained push_stream_longpolling_connection_ttl -syn keyword ngxDirectiveThirdParty contained push_stream_max_channel_id_length -syn keyword ngxDirectiveThirdParty contained push_stream_max_messages_stored_per_channel -syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_channels -syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_wildcard_channels -syn keyword ngxDirectiveThirdParty contained push_stream_max_subscribers_per_channel -syn keyword ngxDirectiveThirdParty contained push_stream_message_template -syn keyword ngxDirectiveThirdParty contained push_stream_message_ttl -syn keyword ngxDirectiveThirdParty contained push_stream_padding_by_user_agent -syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_interval -syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_text -syn keyword ngxDirectiveThirdParty contained push_stream_publisher -syn keyword ngxDirectiveThirdParty contained push_stream_shared_memory_size -syn keyword ngxDirectiveThirdParty contained push_stream_store_messages -syn keyword ngxDirectiveThirdParty contained push_stream_subscriber -syn keyword ngxDirectiveThirdParty contained push_stream_subscriber_connection_ttl -syn keyword ngxDirectiveThirdParty contained push_stream_timeout_with_body -syn keyword ngxDirectiveThirdParty contained push_stream_user_agent -syn keyword ngxDirectiveThirdParty contained push_stream_websocket_allow_publish -syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_max_qtd -syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_prefix - -" redis module -" https://www.nginx.com/resources/wiki/modules/redis/ -syn keyword ngxDirectiveThirdParty contained redis_bind -syn keyword ngxDirectiveThirdParty contained redis_buffer_size -syn keyword ngxDirectiveThirdParty contained redis_connect_timeout -syn keyword ngxDirectiveThirdParty contained redis_gzip_flag -syn keyword ngxDirectiveThirdParty contained redis_next_upstream -syn keyword ngxDirectiveThirdParty contained redis_pass -syn keyword ngxDirectiveThirdParty contained redis_read_timeout -syn keyword ngxDirectiveThirdParty contained redis_send_timeout - -" ngx_http_response -" http://catap.ru/downloads/nginx/ -syn keyword ngxDirectiveThirdParty contained response -syn keyword ngxDirectiveThirdParty contained response_type - -" nginx_substitutions_filter -" https://github.com/yaoweibin/ngx_http_substitutions_filter_module -syn keyword ngxDirectiveThirdParty contained subs_buffers -syn keyword ngxDirectiveThirdParty contained subs_filter -syn keyword ngxDirectiveThirdParty contained subs_filter_bypass -syn keyword ngxDirectiveThirdParty contained subs_filter_types -syn keyword ngxDirectiveThirdParty contained subs_line_buffer_size - -" Tarantool nginx upstream module -" https://github.com/tarantool/nginx_upstream_module -syn keyword ngxDirectiveThirdParty contained tnt_allowed_indexes -syn keyword ngxDirectiveThirdParty contained tnt_allowed_spaces -syn keyword ngxDirectiveThirdParty contained tnt_buffer_size -syn keyword ngxDirectiveThirdParty contained tnt_connect_timeout -syn keyword ngxDirectiveThirdParty contained tnt_delete -syn keyword ngxDirectiveThirdParty contained tnt_http_methods -syn keyword ngxDirectiveThirdParty contained tnt_http_rest_methods -syn keyword ngxDirectiveThirdParty contained tnt_in_multiplier -syn keyword ngxDirectiveThirdParty contained tnt_insert -syn keyword ngxDirectiveThirdParty contained tnt_method -syn keyword ngxDirectiveThirdParty contained tnt_multireturn_skip_count -syn keyword ngxDirectiveThirdParty contained tnt_next_upstream -syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_timeout -syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_tries -syn keyword ngxDirectiveThirdParty contained tnt_out_multiplier -syn keyword ngxDirectiveThirdParty contained tnt_pass -syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request -syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request_buffer_size -syn keyword ngxDirectiveThirdParty contained tnt_pure_result -syn keyword ngxDirectiveThirdParty contained tnt_read_timeout -syn keyword ngxDirectiveThirdParty contained tnt_replace -syn keyword ngxDirectiveThirdParty contained tnt_select -syn keyword ngxDirectiveThirdParty contained tnt_select_limit_max -syn keyword ngxDirectiveThirdParty contained tnt_send_timeout -syn keyword ngxDirectiveThirdParty contained tnt_set_header -syn keyword ngxDirectiveThirdParty contained tnt_update -syn keyword ngxDirectiveThirdParty contained tnt_upsert - -" A module for nginx web server for handling file uploads using multipart/form-data encoding (RFC 1867) -" https://github.com/Austinb/nginx-upload-module -syn keyword ngxDirectiveThirdParty contained upload_aggregate_form_field -syn keyword ngxDirectiveThirdParty contained upload_archive_elm -syn keyword ngxDirectiveThirdParty contained upload_archive_elm_separator -syn keyword ngxDirectiveThirdParty contained upload_archive_path -syn keyword ngxDirectiveThirdParty contained upload_archive_path_separator -syn keyword ngxDirectiveThirdParty contained upload_buffer_size -syn keyword ngxDirectiveThirdParty contained upload_cleanup -syn keyword ngxDirectiveThirdParty contained upload_content_type -syn keyword ngxDirectiveThirdParty contained upload_discard -syn keyword ngxDirectiveThirdParty contained upload_field_name -syn keyword ngxDirectiveThirdParty contained upload_file_crc32 -syn keyword ngxDirectiveThirdParty contained upload_file_md5 -syn keyword ngxDirectiveThirdParty contained upload_file_md5_uc -syn keyword ngxDirectiveThirdParty contained upload_file_name -syn keyword ngxDirectiveThirdParty contained upload_file_sha1 -syn keyword ngxDirectiveThirdParty contained upload_file_sha1_uc -syn keyword ngxDirectiveThirdParty contained upload_file_size -syn keyword ngxDirectiveThirdParty contained upload_filter -syn keyword ngxDirectiveThirdParty contained upload_max_file_size -syn keyword ngxDirectiveThirdParty contained upload_max_output_body_len -syn keyword ngxDirectiveThirdParty contained upload_max_part_header_len -syn keyword ngxDirectiveThirdParty contained upload_pass -syn keyword ngxDirectiveThirdParty contained upload_pass_args -syn keyword ngxDirectiveThirdParty contained upload_pass_form_field -syn keyword ngxDirectiveThirdParty contained upload_set_form_field -syn keyword ngxDirectiveThirdParty contained upload_store -syn keyword ngxDirectiveThirdParty contained upload_store_access -syn keyword ngxDirectiveThirdParty contained upload_tmp_path -syn keyword ngxDirectiveThirdParty contained upload_unzip -syn keyword ngxDirectiveThirdParty contained upload_unzip_buffers -syn keyword ngxDirectiveThirdParty contained upload_unzip_hash -syn keyword ngxDirectiveThirdParty contained upload_unzip_max_file_name_len -syn keyword ngxDirectiveThirdParty contained upload_unzip_window -syn keyword ngxDirectiveThirdParty contained upload_void_content_type - -" nginx-upload-progress-module -" https://github.com/masterzen/nginx-upload-progress-module -syn keyword ngxDirectiveThirdParty contained report_uploads -syn keyword ngxDirectiveThirdParty contained track_uploads -syn keyword ngxDirectiveThirdParty contained upload_progress -syn keyword ngxDirectiveThirdParty contained upload_progress_content_type -syn keyword ngxDirectiveThirdParty contained upload_progress_header -syn keyword ngxDirectiveThirdParty contained upload_progress_java_output -syn keyword ngxDirectiveThirdParty contained upload_progress_json_output -syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_output -syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_parameter -syn keyword ngxDirectiveThirdParty contained upload_progress_template - -" Health checks upstreams for nginx -" https://github.com/yaoweibin/nginx_upstream_check_module -syn keyword ngxDirectiveThirdParty contained check -syn keyword ngxDirectiveThirdParty contained check_fastcgi_param -syn keyword ngxDirectiveThirdParty contained check_http_expect_alive -syn keyword ngxDirectiveThirdParty contained check_http_send -syn keyword ngxDirectiveThirdParty contained check_keepalive_requests -syn keyword ngxDirectiveThirdParty contained check_shm_size -syn keyword ngxDirectiveThirdParty contained check_status - -" The fair load balancer module for nginx -" https://github.com/cryptofuture/nginx-upstream-fair -syn keyword ngxDirectiveThirdParty contained fair -syn keyword ngxDirectiveThirdParty contained upstream_fair_shm_size - -" Nginx Video Thumb Extractor Module -" https://github.com/wandenberg/nginx-video-thumbextractor-module -syn keyword ngxDirectiveThirdParty contained video_thumbextractor -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_height -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_width -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_baseline -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_dpi -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_optimize -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_progressive_mode -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_quality -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_smooth -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_next_time -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_only_keyframe -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_processes_per_worker -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_threads -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_color -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_cols -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_margin -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_cols -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_rows -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_padding -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_rows -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_sample_interval -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_filename -syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_second - -" drizzle-nginx-module - Upstream module for talking to MySQL and Drizzle directly -" https://github.com/openresty/drizzle-nginx-module -syn keyword ngxDirectiveThirdParty contained drizzle_buffer_size -syn keyword ngxDirectiveThirdParty contained drizzle_connect_timeout -syn keyword ngxDirectiveThirdParty contained drizzle_dbname -syn keyword ngxDirectiveThirdParty contained drizzle_keepalive -syn keyword ngxDirectiveThirdParty contained drizzle_module_header -syn keyword ngxDirectiveThirdParty contained drizzle_pass -syn keyword ngxDirectiveThirdParty contained drizzle_query -syn keyword ngxDirectiveThirdParty contained drizzle_recv_cols_timeout -syn keyword ngxDirectiveThirdParty contained drizzle_recv_rows_timeout -syn keyword ngxDirectiveThirdParty contained drizzle_send_query_timeout -syn keyword ngxDirectiveThirdParty contained drizzle_server -syn keyword ngxDirectiveThirdParty contained drizzle_status - -" ngx_dynamic_upstream -" https://github.com/cubicdaiya/ngx_dynamic_upstream -syn keyword ngxDirectiveThirdParty contained dynamic_upstream - -" encrypt and decrypt nginx variable values -" https://github.com/openresty/encrypted-session-nginx-module -syn keyword ngxDirectiveThirdParty contained encrypted_session_expires -syn keyword ngxDirectiveThirdParty contained encrypted_session_iv -syn keyword ngxDirectiveThirdParty contained encrypted_session_key -syn keyword ngxDirectiveThirdParty contained set_decrypt_session -syn keyword ngxDirectiveThirdParty contained set_encrypt_session - -" serve content directly from MongoDB's GridFS -" https://github.com/mdirolf/nginx-gridfs -syn keyword ngxDirectiveThirdParty contained gridfs -syn keyword ngxDirectiveThirdParty contained mongo - -" Adds support for arithmetic operations to NGINX config -" https://github.com/arut/nginx-let-module -syn keyword ngxDirectiveThirdParty contained let - -" ngx_http_lua_module - Embed the power of Lua into Nginx HTTP Servers -" https://github.com/openresty/lua-nginx-module -syn keyword ngxDirectiveThirdParty contained access_by_lua -syn keyword ngxDirectiveThirdParty contained access_by_lua_block -syn keyword ngxDirectiveThirdParty contained access_by_lua_file -syn keyword ngxDirectiveThirdParty contained access_by_lua_no_postpone -syn keyword ngxDirectiveThirdParty contained balancer_by_lua_block -syn keyword ngxDirectiveThirdParty contained balancer_by_lua_file -syn keyword ngxDirectiveThirdParty contained body_filter_by_lua -syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_block -syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_file -syn keyword ngxDirectiveThirdParty contained content_by_lua -syn keyword ngxDirectiveThirdParty contained content_by_lua_block -syn keyword ngxDirectiveThirdParty contained content_by_lua_file -syn keyword ngxDirectiveThirdParty contained header_filter_by_lua -syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_block -syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_file -syn keyword ngxDirectiveThirdParty contained init_by_lua -syn keyword ngxDirectiveThirdParty contained init_by_lua_block -syn keyword ngxDirectiveThirdParty contained init_by_lua_file -syn keyword ngxDirectiveThirdParty contained init_worker_by_lua -syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_block -syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_file -syn keyword ngxDirectiveThirdParty contained log_by_lua -syn keyword ngxDirectiveThirdParty contained log_by_lua_block -syn keyword ngxDirectiveThirdParty contained log_by_lua_file -syn keyword ngxDirectiveThirdParty contained lua_capture_error_log -syn keyword ngxDirectiveThirdParty contained lua_check_client_abort -syn keyword ngxDirectiveThirdParty contained lua_code_cache -syn keyword ngxDirectiveThirdParty contained lua_fake_shm -syn keyword ngxDirectiveThirdParty contained lua_http10_buffering -syn keyword ngxDirectiveThirdParty contained lua_load_resty_core -syn keyword ngxDirectiveThirdParty contained lua_malloc_trim -syn keyword ngxDirectiveThirdParty contained lua_max_pending_timers -syn keyword ngxDirectiveThirdParty contained lua_max_running_timers -syn keyword ngxDirectiveThirdParty contained lua_need_request_body -syn keyword ngxDirectiveThirdParty contained lua_package_cpath -syn keyword ngxDirectiveThirdParty contained lua_package_path -syn keyword ngxDirectiveThirdParty contained lua_regex_cache_max_entries -syn keyword ngxDirectiveThirdParty contained lua_regex_match_limit -syn keyword ngxDirectiveThirdParty contained lua_sa_restart -syn keyword ngxDirectiveThirdParty contained lua_shared_dict -syn keyword ngxDirectiveThirdParty contained lua_socket_buffer_size -syn keyword ngxDirectiveThirdParty contained lua_socket_connect_timeout -syn keyword ngxDirectiveThirdParty contained lua_socket_keepalive_timeout -syn keyword ngxDirectiveThirdParty contained lua_socket_log_errors -syn keyword ngxDirectiveThirdParty contained lua_socket_pool_size -syn keyword ngxDirectiveThirdParty contained lua_socket_read_timeout -syn keyword ngxDirectiveThirdParty contained lua_socket_send_lowat -syn keyword ngxDirectiveThirdParty contained lua_socket_send_timeout -syn keyword ngxDirectiveThirdParty contained lua_ssl_ciphers -syn keyword ngxDirectiveThirdParty contained lua_ssl_crl -syn keyword ngxDirectiveThirdParty contained lua_ssl_protocols -syn keyword ngxDirectiveThirdParty contained lua_ssl_trusted_certificate -syn keyword ngxDirectiveThirdParty contained lua_ssl_verify_depth -syn keyword ngxDirectiveThirdParty contained lua_transform_underscores_in_response_headers -syn keyword ngxDirectiveThirdParty contained lua_use_default_type -syn keyword ngxDirectiveThirdParty contained rewrite_by_lua -syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_block -syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_file -syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_no_postpone -syn keyword ngxDirectiveThirdParty contained set_by_lua -syn keyword ngxDirectiveThirdParty contained set_by_lua_block -syn keyword ngxDirectiveThirdParty contained set_by_lua_file -syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_block -syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_file -syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_block -syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_file -syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_block -syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_file - -" ngx_memc - An extended version of the standard memcached module -" https://github.com/openresty/memc-nginx-module -syn keyword ngxDirectiveThirdParty contained memc_buffer_size -syn keyword ngxDirectiveThirdParty contained memc_cmds_allowed -syn keyword ngxDirectiveThirdParty contained memc_connect_timeout -syn keyword ngxDirectiveThirdParty contained memc_flags_to_last_modified -syn keyword ngxDirectiveThirdParty contained memc_ignore_client_abort -syn keyword ngxDirectiveThirdParty contained memc_next_upstream -syn keyword ngxDirectiveThirdParty contained memc_pass -syn keyword ngxDirectiveThirdParty contained memc_read_timeout -syn keyword ngxDirectiveThirdParty contained memc_send_timeout -syn keyword ngxDirectiveThirdParty contained memc_upstream_fail_timeout -syn keyword ngxDirectiveThirdParty contained memc_upstream_max_fails - -" ModSecurity web application firewall -" https://github.com/SpiderLabs/ModSecurity/tree/master -syn keyword ngxDirectiveThirdParty contained ModSecurityConfig -syn keyword ngxDirectiveThirdParty contained ModSecurityEnabled -syn keyword ngxDirectiveThirdParty contained pool_context_hash_size - -" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX -" https://github.com/nbs-system/naxsi -syn keyword ngxDirectiveThirdParty contained BasicRule -syn keyword ngxDirectiveThirdParty contained CheckRule -syn keyword ngxDirectiveThirdParty contained DeniedUrl -syn keyword ngxDirectiveThirdParty contained LearningMode -syn keyword ngxDirectiveThirdParty contained LibInjectionSql -syn keyword ngxDirectiveThirdParty contained LibInjectionXss -syn keyword ngxDirectiveThirdParty contained MainRule -syn keyword ngxDirectiveThirdParty contained SecRulesDisabled -syn keyword ngxDirectiveThirdParty contained SecRulesEnabled -syn keyword ngxDirectiveThirdParty contained basic_rule -syn keyword ngxDirectiveThirdParty contained check_rule -syn keyword ngxDirectiveThirdParty contained denied_url -syn keyword ngxDirectiveThirdParty contained learning_mode -syn keyword ngxDirectiveThirdParty contained libinjection_sql -syn keyword ngxDirectiveThirdParty contained libinjection_xss -syn keyword ngxDirectiveThirdParty contained main_rule -syn keyword ngxDirectiveThirdParty contained rules_disabled -syn keyword ngxDirectiveThirdParty contained rules_enabled - -" Phusion Passenger -" https://www.phusionpassenger.com/library/config/nginx/reference/ -syn keyword ngxDirectiveThirdParty contained passenger_abort_on_startup_error -syn keyword ngxDirectiveThirdParty contained passenger_abort_websockets_on_process_shutdown -syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_auth_type -syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_password -syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_url -syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_username -syn keyword ngxDirectiveThirdParty contained passenger_anonymous_telemetry_proxy -syn keyword ngxDirectiveThirdParty contained passenger_app_env -syn keyword ngxDirectiveThirdParty contained passenger_app_file_descriptor_ulimit -syn keyword ngxDirectiveThirdParty contained passenger_app_group_name -syn keyword ngxDirectiveThirdParty contained passenger_app_log_file -syn keyword ngxDirectiveThirdParty contained passenger_app_rights -syn keyword ngxDirectiveThirdParty contained passenger_app_root -syn keyword ngxDirectiveThirdParty contained passenger_app_type -syn keyword ngxDirectiveThirdParty contained passenger_base_uri -syn keyword ngxDirectiveThirdParty contained passenger_buffer_response -syn keyword ngxDirectiveThirdParty contained passenger_buffer_size -syn keyword ngxDirectiveThirdParty contained passenger_buffers -syn keyword ngxDirectiveThirdParty contained passenger_busy_buffers_size -syn keyword ngxDirectiveThirdParty contained passenger_concurrency_model -syn keyword ngxDirectiveThirdParty contained passenger_core_file_descriptor_ulimit -syn keyword ngxDirectiveThirdParty contained passenger_ctl -syn keyword ngxDirectiveThirdParty contained passenger_data_buffer_dir -syn keyword ngxDirectiveThirdParty contained passenger_debugger -syn keyword ngxDirectiveThirdParty contained passenger_default_group -syn keyword ngxDirectiveThirdParty contained passenger_default_user -syn keyword ngxDirectiveThirdParty contained passenger_disable_anonymous_telemetry -syn keyword ngxDirectiveThirdParty contained passenger_disable_security_update_check -syn keyword ngxDirectiveThirdParty contained passenger_document_root -syn keyword ngxDirectiveThirdParty contained passenger_dump_config_manifest -syn keyword ngxDirectiveThirdParty contained passenger_enabled -syn keyword ngxDirectiveThirdParty contained passenger_env_var -syn keyword ngxDirectiveThirdParty contained passenger_file_descriptor_log_file -syn keyword ngxDirectiveThirdParty contained passenger_fly_with -syn keyword ngxDirectiveThirdParty contained passenger_force_max_concurrent_requests_per_process -syn keyword ngxDirectiveThirdParty contained passenger_friendly_error_pages -syn keyword ngxDirectiveThirdParty contained passenger_group -syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_bucket_size -syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_max_size -syn keyword ngxDirectiveThirdParty contained passenger_ignore_client_abort -syn keyword ngxDirectiveThirdParty contained passenger_ignore_headers -syn keyword ngxDirectiveThirdParty contained passenger_instance_registry_dir -syn keyword ngxDirectiveThirdParty contained passenger_intercept_errors -syn keyword ngxDirectiveThirdParty contained passenger_load_shell_envvars -syn keyword ngxDirectiveThirdParty contained passenger_log_file -syn keyword ngxDirectiveThirdParty contained passenger_log_level -syn keyword ngxDirectiveThirdParty contained passenger_max_instances -syn keyword ngxDirectiveThirdParty contained passenger_max_instances_per_app -syn keyword ngxDirectiveThirdParty contained passenger_max_pool_size -syn keyword ngxDirectiveThirdParty contained passenger_max_preloader_idle_time -syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_size -syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_time -syn keyword ngxDirectiveThirdParty contained passenger_max_request_time -syn keyword ngxDirectiveThirdParty contained passenger_max_requests -syn keyword ngxDirectiveThirdParty contained passenger_memory_limit -syn keyword ngxDirectiveThirdParty contained passenger_meteor_app_settings -syn keyword ngxDirectiveThirdParty contained passenger_min_instances -syn keyword ngxDirectiveThirdParty contained passenger_monitor_log_file -syn keyword ngxDirectiveThirdParty contained passenger_nodejs -syn keyword ngxDirectiveThirdParty contained passenger_pass_header -syn keyword ngxDirectiveThirdParty contained passenger_pool_idle_time -syn keyword ngxDirectiveThirdParty contained passenger_pre_start -syn keyword ngxDirectiveThirdParty contained passenger_python -syn keyword ngxDirectiveThirdParty contained passenger_read_timeout -syn keyword ngxDirectiveThirdParty contained passenger_request_queue_overflow_status_code -syn keyword ngxDirectiveThirdParty contained passenger_resist_deployment_errors -syn keyword ngxDirectiveThirdParty contained passenger_response_buffer_high_watermark -syn keyword ngxDirectiveThirdParty contained passenger_restart_dir -syn keyword ngxDirectiveThirdParty contained passenger_rolling_restarts -syn keyword ngxDirectiveThirdParty contained passenger_root -syn keyword ngxDirectiveThirdParty contained passenger_ruby -syn keyword ngxDirectiveThirdParty contained passenger_security_update_check_proxy -syn keyword ngxDirectiveThirdParty contained passenger_set_header -syn keyword ngxDirectiveThirdParty contained passenger_show_version_in_header -syn keyword ngxDirectiveThirdParty contained passenger_socket_backlog -syn keyword ngxDirectiveThirdParty contained passenger_spawn_method -syn keyword ngxDirectiveThirdParty contained passenger_start_timeout -syn keyword ngxDirectiveThirdParty contained passenger_startup_file -syn keyword ngxDirectiveThirdParty contained passenger_stat_throttle_rate -syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions -syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions_cookie_name -syn keyword ngxDirectiveThirdParty contained passenger_thread_count -syn keyword ngxDirectiveThirdParty contained passenger_turbocaching -syn keyword ngxDirectiveThirdParty contained passenger_user -syn keyword ngxDirectiveThirdParty contained passenger_user_switching -syn keyword ngxDirectiveThirdParty contained passenger_vary_turbocache_by_cookie -syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_group -syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_user -syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_debug_log_file -syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_use_global_queue -syn keyword ngxDirectiveThirdPartyDeprecated contained rack_env -syn keyword ngxDirectiveThirdPartyDeprecated contained rails_app_spawner_idle_time -syn keyword ngxDirectiveThirdPartyDeprecated contained rails_env -syn keyword ngxDirectiveThirdPartyDeprecated contained rails_framework_spawner_idle_time -syn keyword ngxDirectiveThirdPartyDeprecated contained rails_spawn_method -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_filter -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_address -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_cert -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_port -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_key -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_proxy_address -syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_support - -" ngx_postgres is an upstream module that allows nginx to communicate directly with PostgreSQL database -" https://github.com/FRiCKLE/ngx_postgres -syn keyword ngxDirectiveThirdParty contained postgres_connect_timeout -syn keyword ngxDirectiveThirdParty contained postgres_escape -syn keyword ngxDirectiveThirdParty contained postgres_keepalive -syn keyword ngxDirectiveThirdParty contained postgres_output -syn keyword ngxDirectiveThirdParty contained postgres_pass -syn keyword ngxDirectiveThirdParty contained postgres_query -syn keyword ngxDirectiveThirdParty contained postgres_result_timeout -syn keyword ngxDirectiveThirdParty contained postgres_rewrite -syn keyword ngxDirectiveThirdParty contained postgres_server -syn keyword ngxDirectiveThirdParty contained postgres_set - -" ngx_rds_csv - Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV) -" https://github.com/openresty/rds-csv-nginx-module -syn keyword ngxDirectiveThirdParty contained rds_csv -syn keyword ngxDirectiveThirdParty contained rds_csv_buffer_size -syn keyword ngxDirectiveThirdParty contained rds_csv_content_type -syn keyword ngxDirectiveThirdParty contained rds_csv_field_name_header -syn keyword ngxDirectiveThirdParty contained rds_csv_field_separator -syn keyword ngxDirectiveThirdParty contained rds_csv_row_terminator - -" ngx_rds_json - an output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON -" https://github.com/openresty/rds-json-nginx-module -syn keyword ngxDirectiveThirdParty contained rds_json -syn keyword ngxDirectiveThirdParty contained rds_json_buffer_size -syn keyword ngxDirectiveThirdParty contained rds_json_content_type -syn keyword ngxDirectiveThirdParty contained rds_json_errcode_key -syn keyword ngxDirectiveThirdParty contained rds_json_errstr_key -syn keyword ngxDirectiveThirdParty contained rds_json_format -syn keyword ngxDirectiveThirdParty contained rds_json_ret -syn keyword ngxDirectiveThirdParty contained rds_json_root -syn keyword ngxDirectiveThirdParty contained rds_json_success_property -syn keyword ngxDirectiveThirdParty contained rds_json_user_property - -" ngx_redis2 - Nginx upstream module for the Redis 2.0 protocol -" https://github.com/openresty/redis2-nginx-module -syn keyword ngxDirectiveThirdParty contained redis2_bind -syn keyword ngxDirectiveThirdParty contained redis2_buffer_size -syn keyword ngxDirectiveThirdParty contained redis2_connect_timeout -syn keyword ngxDirectiveThirdParty contained redis2_literal_raw_query -syn keyword ngxDirectiveThirdParty contained redis2_next_upstream -syn keyword ngxDirectiveThirdParty contained redis2_pass -syn keyword ngxDirectiveThirdParty contained redis2_query -syn keyword ngxDirectiveThirdParty contained redis2_raw_queries -syn keyword ngxDirectiveThirdParty contained redis2_raw_query -syn keyword ngxDirectiveThirdParty contained redis2_read_timeout -syn keyword ngxDirectiveThirdParty contained redis2_send_timeout - -" NGINX-based Media Streaming Server -" https://github.com/arut/nginx-rtmp-module -syn keyword ngxDirectiveThirdParty contained ack_window -syn keyword ngxDirectiveThirdParty contained application -syn keyword ngxDirectiveThirdParty contained buffer -syn keyword ngxDirectiveThirdParty contained buflen -syn keyword ngxDirectiveThirdParty contained busy -syn keyword ngxDirectiveThirdParty contained chunk_size -syn keyword ngxDirectiveThirdParty contained dash -syn keyword ngxDirectiveThirdParty contained dash_cleanup -syn keyword ngxDirectiveThirdParty contained dash_fragment -syn keyword ngxDirectiveThirdParty contained dash_nested -syn keyword ngxDirectiveThirdParty contained dash_path -syn keyword ngxDirectiveThirdParty contained dash_playlist_length -syn keyword ngxDirectiveThirdParty contained drop_idle_publisher -syn keyword ngxDirectiveThirdParty contained exec -syn keyword ngxDirectiveThirdParty contained exec_block -syn keyword ngxDirectiveThirdParty contained exec_kill_signal -syn keyword ngxDirectiveThirdParty contained exec_options -syn keyword ngxDirectiveThirdParty contained exec_play -syn keyword ngxDirectiveThirdParty contained exec_play_done -syn keyword ngxDirectiveThirdParty contained exec_publish -syn keyword ngxDirectiveThirdParty contained exec_publish_done -syn keyword ngxDirectiveThirdParty contained exec_pull -syn keyword ngxDirectiveThirdParty contained exec_push -syn keyword ngxDirectiveThirdParty contained exec_record_done -syn keyword ngxDirectiveThirdParty contained exec_static -syn keyword ngxDirectiveThirdParty contained hls_audio_buffer_size -syn keyword ngxDirectiveThirdParty contained hls_base_url -syn keyword ngxDirectiveThirdParty contained hls_cleanup -syn keyword ngxDirectiveThirdParty contained hls_continuous -syn keyword ngxDirectiveThirdParty contained hls_fragment_naming -syn keyword ngxDirectiveThirdParty contained hls_fragment_naming_granularity -syn keyword ngxDirectiveThirdParty contained hls_fragment_slicing -syn keyword ngxDirectiveThirdParty contained hls_fragments_per_key -syn keyword ngxDirectiveThirdParty contained hls_key_path -syn keyword ngxDirectiveThirdParty contained hls_key_url -syn keyword ngxDirectiveThirdParty contained hls_keys -syn keyword ngxDirectiveThirdParty contained hls_max_audio_delay -syn keyword ngxDirectiveThirdParty contained hls_max_fragment -syn keyword ngxDirectiveThirdParty contained hls_muxdelay -syn keyword ngxDirectiveThirdParty contained hls_nested -syn keyword ngxDirectiveThirdParty contained hls_path -syn keyword ngxDirectiveThirdParty contained hls_playlist_length -syn keyword ngxDirectiveThirdParty contained hls_sync -syn keyword ngxDirectiveThirdParty contained hls_type -syn keyword ngxDirectiveThirdParty contained hls_variant -syn keyword ngxDirectiveThirdParty contained idle_streams -syn keyword ngxDirectiveThirdParty contained interleave -syn keyword ngxDirectiveThirdParty contained live -syn keyword ngxDirectiveThirdParty contained max_connections -syn keyword ngxDirectiveThirdParty contained max_message -syn keyword ngxDirectiveThirdParty contained max_streams -syn keyword ngxDirectiveThirdParty contained meta -syn keyword ngxDirectiveThirdParty contained netcall_buffer -syn keyword ngxDirectiveThirdParty contained netcall_timeout -syn keyword ngxDirectiveThirdParty contained notify_method -syn keyword ngxDirectiveThirdParty contained notify_relay_redirect -syn keyword ngxDirectiveThirdParty contained notify_update_strict -syn keyword ngxDirectiveThirdParty contained notify_update_timeout -syn keyword ngxDirectiveThirdParty contained on_connect -syn keyword ngxDirectiveThirdParty contained on_disconnect -syn keyword ngxDirectiveThirdParty contained on_done -syn keyword ngxDirectiveThirdParty contained on_play -syn keyword ngxDirectiveThirdParty contained on_play_done -syn keyword ngxDirectiveThirdParty contained on_publish -syn keyword ngxDirectiveThirdParty contained on_publish_done -syn keyword ngxDirectiveThirdParty contained on_record_done -syn keyword ngxDirectiveThirdParty contained on_update -syn keyword ngxDirectiveThirdParty contained out_cork -syn keyword ngxDirectiveThirdParty contained out_queue -syn keyword ngxDirectiveThirdParty contained ping -syn keyword ngxDirectiveThirdParty contained ping_timeout -syn keyword ngxDirectiveThirdParty contained play -syn keyword ngxDirectiveThirdParty contained play_local_path -syn keyword ngxDirectiveThirdParty contained play_restart -syn keyword ngxDirectiveThirdParty contained play_temp_path -syn keyword ngxDirectiveThirdParty contained play_time_fix -syn keyword ngxDirectiveThirdParty contained publish_notify -syn keyword ngxDirectiveThirdParty contained publish_time_fix -syn keyword ngxDirectiveThirdParty contained pull -syn keyword ngxDirectiveThirdParty contained pull_reconnect -syn keyword ngxDirectiveThirdParty contained push -syn keyword ngxDirectiveThirdParty contained push_reconnect -syn keyword ngxDirectiveThirdParty contained record -syn keyword ngxDirectiveThirdParty contained record_append -syn keyword ngxDirectiveThirdParty contained record_interval -syn keyword ngxDirectiveThirdParty contained record_lock -syn keyword ngxDirectiveThirdParty contained record_max_frames -syn keyword ngxDirectiveThirdParty contained record_max_size -syn keyword ngxDirectiveThirdParty contained record_notify -syn keyword ngxDirectiveThirdParty contained record_path -syn keyword ngxDirectiveThirdParty contained record_suffix -syn keyword ngxDirectiveThirdParty contained record_unique -syn keyword ngxDirectiveThirdParty contained recorder -syn keyword ngxDirectiveThirdParty contained relay_buffer -syn keyword ngxDirectiveThirdParty contained respawn -syn keyword ngxDirectiveThirdParty contained respawn_timeout -syn keyword ngxDirectiveThirdParty contained rtmp -syn keyword ngxDirectiveThirdParty contained rtmp_auto_push -syn keyword ngxDirectiveThirdParty contained rtmp_auto_push_reconnect -syn keyword ngxDirectiveThirdParty contained rtmp_control -syn keyword ngxDirectiveThirdParty contained rtmp_socket_dir -syn keyword ngxDirectiveThirdParty contained rtmp_stat -syn keyword ngxDirectiveThirdParty contained rtmp_stat_stylesheet -syn keyword ngxDirectiveThirdParty contained session_relay -syn keyword ngxDirectiveThirdParty contained so_keepalive -syn keyword ngxDirectiveThirdParty contained stream_buckets -syn keyword ngxDirectiveThirdParty contained sync -syn keyword ngxDirectiveThirdParty contained wait_key -syn keyword ngxDirectiveThirdParty contained wait_video - -" ngx_set_misc - Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more) -" https://github.com/openresty/set-misc-nginx-module -syn keyword ngxDirectiveThirdParty contained set_base32_alphabet -syn keyword ngxDirectiveThirdParty contained set_base32_padding -syn keyword ngxDirectiveThirdParty contained set_decode_base32 -syn keyword ngxDirectiveThirdParty contained set_decode_base64 -syn keyword ngxDirectiveThirdParty contained set_decode_hex -syn keyword ngxDirectiveThirdParty contained set_encode_base32 -syn keyword ngxDirectiveThirdParty contained set_encode_base64 -syn keyword ngxDirectiveThirdParty contained set_encode_hex -syn keyword ngxDirectiveThirdParty contained set_escape_uri -syn keyword ngxDirectiveThirdParty contained set_formatted_gmt_time -syn keyword ngxDirectiveThirdParty contained set_formatted_local_time -syn keyword ngxDirectiveThirdParty contained set_hashed_upstream -syn keyword ngxDirectiveThirdParty contained set_hmac_sha1 -syn keyword ngxDirectiveThirdParty contained set_if_empty -syn keyword ngxDirectiveThirdParty contained set_local_today -syn keyword ngxDirectiveThirdParty contained set_misc_base32_padding -syn keyword ngxDirectiveThirdParty contained set_quote_json_str -syn keyword ngxDirectiveThirdParty contained set_quote_pgsql_str -syn keyword ngxDirectiveThirdParty contained set_quote_sql_str -syn keyword ngxDirectiveThirdParty contained set_random -syn keyword ngxDirectiveThirdParty contained set_rotate -syn keyword ngxDirectiveThirdParty contained set_secure_random_alphanum -syn keyword ngxDirectiveThirdParty contained set_secure_random_lcalpha -syn keyword ngxDirectiveThirdParty contained set_unescape_uri - -" nginx-sflow-module -" https://github.com/sflow/nginx-sflow-module -syn keyword ngxDirectiveThirdParty contained sflow - -" Shibboleth auth request module for Nginx -" https://github.com/nginx-shib/nginx-http-shibboleth -syn keyword ngxDirectiveThirdParty contained shib_request -syn keyword ngxDirectiveThirdParty contained shib_request_set -syn keyword ngxDirectiveThirdParty contained shib_request_use_headers - -" nginx module which adds ability to cache static files -" https://github.com/FRiCKLE/ngx_slowfs_cache -syn keyword ngxDirectiveThirdParty contained slowfs_big_file_size -syn keyword ngxDirectiveThirdParty contained slowfs_cache -syn keyword ngxDirectiveThirdParty contained slowfs_cache_key -syn keyword ngxDirectiveThirdParty contained slowfs_cache_min_uses -syn keyword ngxDirectiveThirdParty contained slowfs_cache_path -syn keyword ngxDirectiveThirdParty contained slowfs_cache_purge -syn keyword ngxDirectiveThirdParty contained slowfs_cache_valid -syn keyword ngxDirectiveThirdParty contained slowfs_temp_path - -" Dynamic Image Transformation Module For nginx -" https://github.com/cubicdaiya/ngx_small_light -syn keyword ngxDirectiveThirdParty contained small_light -syn keyword ngxDirectiveThirdParty contained small_light_buffer -syn keyword ngxDirectiveThirdParty contained small_light_getparam_mode -syn keyword ngxDirectiveThirdParty contained small_light_imlib2_temp_dir -syn keyword ngxDirectiveThirdParty contained small_light_material_dir -syn keyword ngxDirectiveThirdParty contained small_light_pattern_define -syn keyword ngxDirectiveThirdParty contained small_light_radius_max -syn keyword ngxDirectiveThirdParty contained small_light_sigma_max - -" ngx_srcache - Transparent subrequest-based caching layout for arbitrary nginx locations -" https://github.com/openresty/srcache-nginx-module -syn keyword ngxDirectiveThirdParty contained srcache_buffer -syn keyword ngxDirectiveThirdParty contained srcache_default_expire -syn keyword ngxDirectiveThirdParty contained srcache_fetch -syn keyword ngxDirectiveThirdParty contained srcache_fetch_skip -syn keyword ngxDirectiveThirdParty contained srcache_header_buffer_size -syn keyword ngxDirectiveThirdParty contained srcache_ignore_content_encoding -syn keyword ngxDirectiveThirdParty contained srcache_max_expire -syn keyword ngxDirectiveThirdParty contained srcache_methods -syn keyword ngxDirectiveThirdParty contained srcache_request_cache_control -syn keyword ngxDirectiveThirdParty contained srcache_response_cache_control -syn keyword ngxDirectiveThirdParty contained srcache_store -syn keyword ngxDirectiveThirdParty contained srcache_store_hide_header -syn keyword ngxDirectiveThirdParty contained srcache_store_max_size -syn keyword ngxDirectiveThirdParty contained srcache_store_no_cache -syn keyword ngxDirectiveThirdParty contained srcache_store_no_store -syn keyword ngxDirectiveThirdParty contained srcache_store_pass_header -syn keyword ngxDirectiveThirdParty contained srcache_store_private -syn keyword ngxDirectiveThirdParty contained srcache_store_ranges -syn keyword ngxDirectiveThirdParty contained srcache_store_skip -syn keyword ngxDirectiveThirdParty contained srcache_store_statuses - -" NGINX-based VOD Packager -" https://github.com/kaltura/nginx-vod-module -syn keyword ngxDirectiveThirdParty contained vod -syn keyword ngxDirectiveThirdParty contained vod_align_segments_to_key_frames -syn keyword ngxDirectiveThirdParty contained vod_apply_dynamic_mapping -syn keyword ngxDirectiveThirdParty contained vod_base_url -syn keyword ngxDirectiveThirdParty contained vod_bootstrap_segment_durations -syn keyword ngxDirectiveThirdParty contained vod_cache_buffer_size -syn keyword ngxDirectiveThirdParty contained vod_clip_from_param_name -syn keyword ngxDirectiveThirdParty contained vod_clip_to_param_name -syn keyword ngxDirectiveThirdParty contained vod_drm_clear_lead_segment_count -syn keyword ngxDirectiveThirdParty contained vod_drm_enabled -syn keyword ngxDirectiveThirdParty contained vod_drm_info_cache -syn keyword ngxDirectiveThirdParty contained vod_drm_max_info_length -syn keyword ngxDirectiveThirdParty contained vod_drm_request_uri -syn keyword ngxDirectiveThirdParty contained vod_drm_single_key -syn keyword ngxDirectiveThirdParty contained vod_drm_upstream_location -syn keyword ngxDirectiveThirdParty contained vod_dynamic_clip_map_uri -syn keyword ngxDirectiveThirdParty contained vod_dynamic_mapping_cache -syn keyword ngxDirectiveThirdParty contained vod_encryption_iv_seed -syn keyword ngxDirectiveThirdParty contained vod_expires -syn keyword ngxDirectiveThirdParty contained vod_expires_live -syn keyword ngxDirectiveThirdParty contained vod_expires_live_time_dependent -syn keyword ngxDirectiveThirdParty contained vod_fallback_upstream_location -syn keyword ngxDirectiveThirdParty contained vod_force_continuous_timestamps -syn keyword ngxDirectiveThirdParty contained vod_force_playlist_type_vod -syn keyword ngxDirectiveThirdParty contained vod_force_sequence_index -syn keyword ngxDirectiveThirdParty contained vod_gop_look_ahead -syn keyword ngxDirectiveThirdParty contained vod_gop_look_behind -syn keyword ngxDirectiveThirdParty contained vod_ignore_edit_list -syn keyword ngxDirectiveThirdParty contained vod_initial_read_size -syn keyword ngxDirectiveThirdParty contained vod_lang_param_name -syn keyword ngxDirectiveThirdParty contained vod_last_modified -syn keyword ngxDirectiveThirdParty contained vod_last_modified_types -syn keyword ngxDirectiveThirdParty contained vod_live_mapping_cache -syn keyword ngxDirectiveThirdParty contained vod_live_response_cache -syn keyword ngxDirectiveThirdParty contained vod_live_window_duration -syn keyword ngxDirectiveThirdParty contained vod_manifest_duration_policy -syn keyword ngxDirectiveThirdParty contained vod_manifest_segment_durations_mode -syn keyword ngxDirectiveThirdParty contained vod_mapping_cache -syn keyword ngxDirectiveThirdParty contained vod_max_frames_size -syn keyword ngxDirectiveThirdParty contained vod_max_mapping_response_size -syn keyword ngxDirectiveThirdParty contained vod_max_metadata_size -syn keyword ngxDirectiveThirdParty contained vod_max_upstream_headers_size -syn keyword ngxDirectiveThirdParty contained vod_media_set_map_uri -syn keyword ngxDirectiveThirdParty contained vod_media_set_override_json -syn keyword ngxDirectiveThirdParty contained vod_metadata_cache -syn keyword ngxDirectiveThirdParty contained vod_min_single_nalu_per_frame_segment -syn keyword ngxDirectiveThirdParty contained vod_mode -syn keyword ngxDirectiveThirdParty contained vod_multi_uri_suffix -syn keyword ngxDirectiveThirdParty contained vod_notification_uri -syn keyword ngxDirectiveThirdParty contained vod_open_file_thread_pool -syn keyword ngxDirectiveThirdParty contained vod_output_buffer_pool -syn keyword ngxDirectiveThirdParty contained vod_parse_hdlr_name -syn keyword ngxDirectiveThirdParty contained vod_path_response_postfix -syn keyword ngxDirectiveThirdParty contained vod_path_response_prefix -syn keyword ngxDirectiveThirdParty contained vod_performance_counters -syn keyword ngxDirectiveThirdParty contained vod_proxy_header_name -syn keyword ngxDirectiveThirdParty contained vod_proxy_header_value -syn keyword ngxDirectiveThirdParty contained vod_redirect_segments_url -syn keyword ngxDirectiveThirdParty contained vod_remote_upstream_location -syn keyword ngxDirectiveThirdParty contained vod_response_cache -syn keyword ngxDirectiveThirdParty contained vod_secret_key -syn keyword ngxDirectiveThirdParty contained vod_segment_count_policy -syn keyword ngxDirectiveThirdParty contained vod_segment_duration -syn keyword ngxDirectiveThirdParty contained vod_segments_base_url -syn keyword ngxDirectiveThirdParty contained vod_source_clip_map_uri -syn keyword ngxDirectiveThirdParty contained vod_speed_param_name -syn keyword ngxDirectiveThirdParty contained vod_status -syn keyword ngxDirectiveThirdParty contained vod_time_shift_param_name -syn keyword ngxDirectiveThirdParty contained vod_tracks_param_name -syn keyword ngxDirectiveThirdParty contained vod_upstream_extra_args -syn keyword ngxDirectiveThirdParty contained vod_upstream_location - -" Nginx virtual host traffic status module -" https://github.com/vozlt/nginx-module-vts -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_average_method -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_limit -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_stats -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_format -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_jsonp -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_sum_key -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_dump -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_host -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_set_key -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_check_duplicate -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_max_node -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_histogram_buckets -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_check_duplicate -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic_by_set_key -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_set_by_filter -syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_zone - -" xss-nginx-module - Native cross-site scripting support in nginx -" https://github.com/openresty/xss-nginx-module -syn keyword ngxDirectiveThirdParty contained xss_callback_arg -syn keyword ngxDirectiveThirdParty contained xss_check_status -syn keyword ngxDirectiveThirdParty contained xss_get -syn keyword ngxDirectiveThirdParty contained xss_input_types -syn keyword ngxDirectiveThirdParty contained xss_output_type -syn keyword ngxDirectiveThirdParty contained xss_override_status - -" Add support for array-typed variables to nginx config files -" https://github.com/openresty/array-var-nginx-module -syn keyword ngxDirectiveThirdParty contained array_join -syn keyword ngxDirectiveThirdParty contained array_map -syn keyword ngxDirectiveThirdParty contained array_map_op -syn keyword ngxDirectiveThirdParty contained array_split - -" NGINX module for Brotli compression -" https://github.com/eustas/ngx_brotli -syn keyword ngxDirectiveThirdParty contained brotli -syn keyword ngxDirectiveThirdParty contained brotli_buffers -syn keyword ngxDirectiveThirdParty contained brotli_comp_level -syn keyword ngxDirectiveThirdParty contained brotli_min_length -syn keyword ngxDirectiveThirdParty contained brotli_static -syn keyword ngxDirectiveThirdParty contained brotli_types -syn keyword ngxDirectiveThirdParty contained brotli_window - -" form-input-nginx-module -" https://github.com/calio/form-input-nginx-module -syn keyword ngxDirectiveThirdParty contained set_form_input -syn keyword ngxDirectiveThirdParty contained set_form_input_multi - -" character conversion nginx module using libiconv -" https://github.com/calio/iconv-nginx-module -syn keyword ngxDirectiveThirdParty contained iconv_buffer_size -syn keyword ngxDirectiveThirdParty contained iconv_filter -syn keyword ngxDirectiveThirdParty contained set_iconv - -" 3rd party modules list taken from -" https://www.nginx.com/resources/wiki/modules/ -" --------------------------------------------- - -" Nginx Module for Authenticating Akamai G2O requests -" https://github.com/kaltura/nginx_mod_akamai_g2o -syn keyword ngxDirectiveThirdParty contained g2o -syn keyword ngxDirectiveThirdParty contained g2o_data_header -syn keyword ngxDirectiveThirdParty contained g2o_hash_function -syn keyword ngxDirectiveThirdParty contained g2o_key -syn keyword ngxDirectiveThirdParty contained g2o_log_level -syn keyword ngxDirectiveThirdParty contained g2o_nonce -syn keyword ngxDirectiveThirdParty contained g2o_sign_header -syn keyword ngxDirectiveThirdParty contained g2o_time_window -syn keyword ngxDirectiveThirdParty contained g2o_version - -" nginx_lua_module -" https://github.com/alacner/nginx_lua_module -syn keyword ngxDirectiveThirdParty contained lua_file - -" Nginx Audio Track for HTTP Live Streaming -" https://github.com/flavioribeiro/nginx-audio-track-for-hls-module -syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track -syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_format -syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_header -syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_rootpath - -" A Nginx module to dump backtrace when a worker process exits abnormally -" https://github.com/alibaba/nginx-backtrace -syn keyword ngxDirectiveThirdParty contained backtrace_log -syn keyword ngxDirectiveThirdParty contained backtrace_max_stack_size - -" circle_gif module -" https://github.com/evanmiller/nginx_circle_gif -syn keyword ngxDirectiveThirdParty contained circle_gif -syn keyword ngxDirectiveThirdParty contained circle_gif_max_radius -syn keyword ngxDirectiveThirdParty contained circle_gif_min_radius -syn keyword ngxDirectiveThirdParty contained circle_gif_step_radius - -" Upstream Consistent Hash -" https://github.com/replay/ngx_http_consistent_hash -syn keyword ngxDirectiveThirdParty contained consistent_hash - -" Nginx module for etags on dynamic content -" https://github.com/kali/nginx-dynamic-etags -syn keyword ngxDirectiveThirdParty contained dynamic_etags - -" Enhanced Nginx Memcached Module -" https://github.com/bpaquet/ngx_http_enhanced_memcached_module -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_delete -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_put -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_bind -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_buffer_size -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_connect_timeout -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush_namespace -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_hash_keys_with_md5 -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_pass -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_read_timeout -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_send_timeout -syn keyword ngxDirectiveThirdParty contained enhanced_memcached_stats - -" nginx max connections queue -" https://github.com/ezmobius/nginx-ey-balancer -syn keyword ngxDirectiveThirdParty contained max_connections_max_queue_length -syn keyword ngxDirectiveThirdParty contained max_connections_queue_timeout - -" Nginx module for POST authentication and authorization -" https://github.com/veruu/ngx_form_auth -syn keyword ngxDirectiveThirdParty contained form_auth -syn keyword ngxDirectiveThirdParty contained form_auth_login -syn keyword ngxDirectiveThirdParty contained form_auth_pam_service -syn keyword ngxDirectiveThirdParty contained form_auth_password -syn keyword ngxDirectiveThirdParty contained form_auth_remote_user - -" ngx_http_accounting_module -" https://github.com/Lax/ngx_http_accounting_module -syn keyword ngxDirectiveThirdParty contained accounting -syn keyword ngxDirectiveThirdParty contained accounting_id -syn keyword ngxDirectiveThirdParty contained accounting_interval -syn keyword ngxDirectiveThirdParty contained accounting_log -syn keyword ngxDirectiveThirdParty contained accounting_perturb - -" concatenating files in a given context: CSS and JS files usually -" https://github.com/alibaba/nginx-http-concat -syn keyword ngxDirectiveThirdParty contained concat -syn keyword ngxDirectiveThirdParty contained concat_delimiter -syn keyword ngxDirectiveThirdParty contained concat_ignore_file_error -syn keyword ngxDirectiveThirdParty contained concat_max_files -syn keyword ngxDirectiveThirdParty contained concat_types -syn keyword ngxDirectiveThirdParty contained concat_unique - -" update upstreams' config by restful interface -" https://github.com/yzprofile/ngx_http_dyups_module -syn keyword ngxDirectiveThirdParty contained dyups_interface -syn keyword ngxDirectiveThirdParty contained dyups_read_msg_log -syn keyword ngxDirectiveThirdParty contained dyups_read_msg_timeout -syn keyword ngxDirectiveThirdParty contained dyups_shm_zone_size -syn keyword ngxDirectiveThirdParty contained dyups_trylock -syn keyword ngxDirectiveThirdParty contained dyups_upstream_conf - -" add given content to the end of the response according to the condition specified -" https://github.com/flygoast/ngx_http_footer_if_filter -syn keyword ngxDirectiveThirdParty contained footer_if - -" NGINX HTTP Internal Redirect Module -" https://github.com/flygoast/ngx_http_internal_redirect -syn keyword ngxDirectiveThirdParty contained internal_redirect_if -syn keyword ngxDirectiveThirdParty contained internal_redirect_if_no_postpone - -" nginx-ip-blocker -" https://github.com/tmthrgd/nginx-ip-blocker -syn keyword ngxDirectiveThirdParty contained ip_blocker - -" IP2Location Nginx -" https://github.com/chrislim2888/ip2location-nginx -syn keyword ngxDirectiveThirdParty contained ip2location_database - -" Limit upload rate -" https://github.com/cfsego/limit_upload_rate -syn keyword ngxDirectiveThirdParty contained limit_upload_rate -syn keyword ngxDirectiveThirdParty contained limit_upload_rate_after -syn keyword ngxDirectiveThirdParty contained limit_upload_rate_log_level - -" limit the number of connections to upstream -" https://github.com/cfsego/nginx-limit-upstream -syn keyword ngxDirectiveThirdParty contained limit_upstream_conn -syn keyword ngxDirectiveThirdParty contained limit_upstream_log_level -syn keyword ngxDirectiveThirdParty contained limit_upstream_zone - -" conditional accesslog for nginx -" https://github.com/cfsego/ngx_log_if -syn keyword ngxDirectiveThirdParty contained access_log_bypass_if - -" log messages over ZeroMQ -" https://github.com/alticelabs/nginx-log-zmq -syn keyword ngxDirectiveThirdParty contained log_zmq_endpoint -syn keyword ngxDirectiveThirdParty contained log_zmq_format -syn keyword ngxDirectiveThirdParty contained log_zmq_off -syn keyword ngxDirectiveThirdParty contained log_zmq_server - -" simple module to uppercase/lowercase strings in the nginx config -" https://github.com/replay/ngx_http_lower_upper_case -syn keyword ngxDirectiveThirdParty contained lower -syn keyword ngxDirectiveThirdParty contained upper - -" content filter for nginx, which returns the md5 hash of the content otherwise returned -" https://github.com/kainswor/nginx_md5_filter -syn keyword ngxDirectiveThirdParty contained md5_filter - -" Non-blocking upstream module for Nginx to connect to MongoDB -" https://github.com/simpl/ngx_mongo -syn keyword ngxDirectiveThirdParty contained mongo_auth -syn keyword ngxDirectiveThirdParty contained mongo_bind -syn keyword ngxDirectiveThirdParty contained mongo_buffer_size -syn keyword ngxDirectiveThirdParty contained mongo_buffering -syn keyword ngxDirectiveThirdParty contained mongo_buffers -syn keyword ngxDirectiveThirdParty contained mongo_busy_buffers_size -syn keyword ngxDirectiveThirdParty contained mongo_connect_timeout -syn keyword ngxDirectiveThirdParty contained mongo_json -syn keyword ngxDirectiveThirdParty contained mongo_next_upstream -syn keyword ngxDirectiveThirdParty contained mongo_pass -syn keyword ngxDirectiveThirdParty contained mongo_query -syn keyword ngxDirectiveThirdParty contained mongo_read_timeout -syn keyword ngxDirectiveThirdParty contained mongo_send_timeout - -" Nginx OCSP processing module designed for response caching -" https://github.com/kyprizel/nginx_ocsp_proxy-module -syn keyword ngxDirectiveThirdParty contained ocsp_cache_timeout -syn keyword ngxDirectiveThirdParty contained ocsp_proxy - -" Nginx OpenSSL version check at startup -" https://github.com/apcera/nginx-openssl-version -syn keyword ngxDirectiveThirdParty contained openssl_builddate_minimum -syn keyword ngxDirectiveThirdParty contained openssl_version_minimum - -" Automatic PageSpeed optimization module for Nginx -" https://github.com/pagespeed/ngx_pagespeed -syn keyword ngxDirectiveThirdParty contained pagespeed - -" PECL Memcache standard hashing compatible loadbalancer for Nginx -" https://github.com/replay/ngx_http_php_memcache_standard_balancer -syn keyword ngxDirectiveThirdParty contained hash_key - -" nginx module to parse php sessions -" https://github.com/replay/ngx_http_php_session -syn keyword ngxDirectiveThirdParty contained php_session_parse -syn keyword ngxDirectiveThirdParty contained php_session_strip_formatting - -" Nginx HTTP rDNS module -" https://github.com/flant/nginx-http-rdns -syn keyword ngxDirectiveThirdParty contained rdns -syn keyword ngxDirectiveThirdParty contained rdns_allow -syn keyword ngxDirectiveThirdParty contained rdns_deny - -" Streaming regular expression replacement in response bodies -" https://github.com/openresty/replace-filter-nginx-module -syn keyword ngxDirectiveThirdParty contained replace_filter -syn keyword ngxDirectiveThirdParty contained replace_filter_last_modified -syn keyword ngxDirectiveThirdParty contained replace_filter_max_buffered_size -syn keyword ngxDirectiveThirdParty contained replace_filter_skip -syn keyword ngxDirectiveThirdParty contained replace_filter_types - -" Link RRDtool's graphing facilities directly into nginx -" https://github.com/evanmiller/mod_rrd_graph -syn keyword ngxDirectiveThirdParty contained rrd_graph -syn keyword ngxDirectiveThirdParty contained rrd_graph_root - -" Module for nginx to proxy rtmp using http protocol -" https://github.com/kwojtek/nginx-rtmpt-proxy-module -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_http_timeout -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_rtmp_timeout -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stat -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stylesheet -syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_target - -" Syntactically Awesome NGINX Module -" https://github.com/mneudert/sass-nginx-module -syn keyword ngxDirectiveThirdParty contained sass_compile -syn keyword ngxDirectiveThirdParty contained sass_error_log -syn keyword ngxDirectiveThirdParty contained sass_include_path -syn keyword ngxDirectiveThirdParty contained sass_indent -syn keyword ngxDirectiveThirdParty contained sass_is_indented_syntax -syn keyword ngxDirectiveThirdParty contained sass_linefeed -syn keyword ngxDirectiveThirdParty contained sass_output_style -syn keyword ngxDirectiveThirdParty contained sass_precision -syn keyword ngxDirectiveThirdParty contained sass_source_comments -syn keyword ngxDirectiveThirdParty contained sass_source_map_embed - -" Nginx Selective Cache Purge Module -" https://github.com/wandenberg/nginx-selective-cache-purge-module -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_query -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_database -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_host -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_password -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_port -syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_unix_socket - -" cconv nginx module -" https://github.com/liseen/set-cconv-nginx-module -syn keyword ngxDirectiveThirdParty contained set_cconv_to_simp -syn keyword ngxDirectiveThirdParty contained set_cconv_to_trad -syn keyword ngxDirectiveThirdParty contained set_pinyin_to_normal - -" Nginx module that allows the setting of variables to the value of a variety of hashes -" https://github.com/simpl/ngx_http_set_hash -syn keyword ngxDirectiveThirdParty contained set_md5 -syn keyword ngxDirectiveThirdParty contained set_md5_upper -syn keyword ngxDirectiveThirdParty contained set_murmur2 -syn keyword ngxDirectiveThirdParty contained set_murmur2_upper -syn keyword ngxDirectiveThirdParty contained set_sha1 -syn keyword ngxDirectiveThirdParty contained set_sha1_upper - -" Nginx module to set the language of a request based on a number of options -" https://github.com/simpl/ngx_http_set_lang -syn keyword ngxDirectiveThirdParty contained lang_cookie -syn keyword ngxDirectiveThirdParty contained lang_get_var -syn keyword ngxDirectiveThirdParty contained lang_host -syn keyword ngxDirectiveThirdParty contained lang_list -syn keyword ngxDirectiveThirdParty contained lang_post_var -syn keyword ngxDirectiveThirdParty contained lang_referer -syn keyword ngxDirectiveThirdParty contained set_lang -syn keyword ngxDirectiveThirdParty contained set_lang_method - -" Nginx Sorted Querystring Module -" https://github.com/wandenberg/nginx-sorted-querystring-module -syn keyword ngxDirectiveThirdParty contained sorted_querysting_filter_parameter - -" Nginx upstream module for Sphinx 2.x search daemon -" https://github.com/reeteshranjan/sphinx2-nginx-module -syn keyword ngxDirectiveThirdParty contained sphinx2_bind -syn keyword ngxDirectiveThirdParty contained sphinx2_buffer_size -syn keyword ngxDirectiveThirdParty contained sphinx2_connect_timeout -syn keyword ngxDirectiveThirdParty contained sphinx2_next_upstream -syn keyword ngxDirectiveThirdParty contained sphinx2_pass -syn keyword ngxDirectiveThirdParty contained sphinx2_read_timeout -syn keyword ngxDirectiveThirdParty contained sphinx2_send_timeout - -" Nginx module for retrieving user attributes and groups from SSSD -" https://github.com/veruu/ngx_sssd_info -syn keyword ngxDirectiveThirdParty contained sssd_info -syn keyword ngxDirectiveThirdParty contained sssd_info_attribute -syn keyword ngxDirectiveThirdParty contained sssd_info_attribute_separator -syn keyword ngxDirectiveThirdParty contained sssd_info_attributes -syn keyword ngxDirectiveThirdParty contained sssd_info_group -syn keyword ngxDirectiveThirdParty contained sssd_info_group_separator -syn keyword ngxDirectiveThirdParty contained sssd_info_groups -syn keyword ngxDirectiveThirdParty contained sssd_info_output_to - -" An nginx module for sending statistics to statsd -" https://github.com/zebrafishlabs/nginx-statsd -syn keyword ngxDirectiveThirdParty contained statsd_count -syn keyword ngxDirectiveThirdParty contained statsd_sample_rate -syn keyword ngxDirectiveThirdParty contained statsd_server -syn keyword ngxDirectiveThirdParty contained statsd_timing - -" ngx_stream_echo - TCP/stream echo module for NGINX (a port of the ngx_http_echo module) -" https://github.com/openresty/stream-echo-nginx-module -syn keyword ngxDirectiveThirdParty contained echo -syn keyword ngxDirectiveThirdParty contained echo_client_error_log_level -syn keyword ngxDirectiveThirdParty contained echo_discard_request -syn keyword ngxDirectiveThirdParty contained echo_duplicate -syn keyword ngxDirectiveThirdParty contained echo_flush_wait -syn keyword ngxDirectiveThirdParty contained echo_lingering_close -syn keyword ngxDirectiveThirdParty contained echo_lingering_time -syn keyword ngxDirectiveThirdParty contained echo_lingering_timeout -syn keyword ngxDirectiveThirdParty contained echo_read_buffer_size -syn keyword ngxDirectiveThirdParty contained echo_read_bytes -syn keyword ngxDirectiveThirdParty contained echo_read_line -syn keyword ngxDirectiveThirdParty contained echo_read_timeout -syn keyword ngxDirectiveThirdParty contained echo_request_data -syn keyword ngxDirectiveThirdParty contained echo_send_timeout -syn keyword ngxDirectiveThirdParty contained echo_sleep - -" Embed the power of Lua into NGINX TCP/UDP servers -" https://github.com/openresty/stream-lua-nginx-module -syn keyword ngxDirectiveThirdParty contained lua_add_variable -syn keyword ngxDirectiveThirdParty contained preread_by_lua_block -syn keyword ngxDirectiveThirdParty contained preread_by_lua_file -syn keyword ngxDirectiveThirdParty contained preread_by_lua_no_postpone - -" nginx-upsync-module -" https://github.com/weibocom/nginx-upsync-module -syn keyword ngxDirectiveThirdParty contained upstream_show -syn keyword ngxDirectiveThirdParty contained upsync -syn keyword ngxDirectiveThirdParty contained upsync_dump_path -syn keyword ngxDirectiveThirdParty contained upsync_lb - -" Whitespace stripper for nginx -" https://github.com/evanmiller/mod_strip -syn keyword ngxDirectiveThirdParty contained strip - -" Split one big HTTP/Range request to multiple subrange requesets -" https://github.com/Qihoo360/ngx_http_subrange_module -syn keyword ngxDirectiveThirdParty contained subrange - -" summarizer-nginx-module -" https://github.com/reeteshranjan/summarizer-nginx-module -syn keyword ngxDirectiveThirdParty contained summarizer_bind -syn keyword ngxDirectiveThirdParty contained summarizer_buffer_size -syn keyword ngxDirectiveThirdParty contained summarizer_connect_timeout -syn keyword ngxDirectiveThirdParty contained summarizer_next_upstream -syn keyword ngxDirectiveThirdParty contained summarizer_pass -syn keyword ngxDirectiveThirdParty contained summarizer_read_timeout -syn keyword ngxDirectiveThirdParty contained summarizer_send_timeout - -" nginx module providing API to communicate with supervisord and manage (start/stop) backends on-demand -" https://github.com/FRiCKLE/ngx_supervisord -syn keyword ngxDirectiveThirdParty contained supervisord -syn keyword ngxDirectiveThirdParty contained supervisord_inherit_backend_status -syn keyword ngxDirectiveThirdParty contained supervisord_name -syn keyword ngxDirectiveThirdParty contained supervisord_start -syn keyword ngxDirectiveThirdParty contained supervisord_stop - -" simple robot mitigation module using cookie based challenge/response technique. Not supported any more. -" https://github.com/kyprizel/testcookie-nginx-module -syn keyword ngxDirectiveThirdParty contained testcookie -syn keyword ngxDirectiveThirdParty contained testcookie_arg -syn keyword ngxDirectiveThirdParty contained testcookie_deny_keepalive -syn keyword ngxDirectiveThirdParty contained testcookie_domain -syn keyword ngxDirectiveThirdParty contained testcookie_expires -syn keyword ngxDirectiveThirdParty contained testcookie_fallback -syn keyword ngxDirectiveThirdParty contained testcookie_get_only -syn keyword ngxDirectiveThirdParty contained testcookie_httponly_flag -syn keyword ngxDirectiveThirdParty contained testcookie_https_location -syn keyword ngxDirectiveThirdParty contained testcookie_internal -syn keyword ngxDirectiveThirdParty contained testcookie_max_attempts -syn keyword ngxDirectiveThirdParty contained testcookie_name -syn keyword ngxDirectiveThirdParty contained testcookie_p3p -syn keyword ngxDirectiveThirdParty contained testcookie_pass -syn keyword ngxDirectiveThirdParty contained testcookie_path -syn keyword ngxDirectiveThirdParty contained testcookie_port_in_redirect -syn keyword ngxDirectiveThirdParty contained testcookie_redirect_via_refresh -syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie -syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_iv -syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_key -syn keyword ngxDirectiveThirdParty contained testcookie_refresh_status -syn keyword ngxDirectiveThirdParty contained testcookie_refresh_template -syn keyword ngxDirectiveThirdParty contained testcookie_secret -syn keyword ngxDirectiveThirdParty contained testcookie_secure_flag -syn keyword ngxDirectiveThirdParty contained testcookie_session -syn keyword ngxDirectiveThirdParty contained testcookie_whitelist - -" ngx_http_types_filter_module -" https://github.com/flygoast/ngx_http_types_filter -syn keyword ngxDirectiveThirdParty contained types_filter -syn keyword ngxDirectiveThirdParty contained types_filter_use_default - -" A module allowing the nginx to use files embedded in a zip file -" https://github.com/youzee/nginx-unzip-module -syn keyword ngxDirectiveThirdParty contained file_in_unzip -syn keyword ngxDirectiveThirdParty contained file_in_unzip_archivefile -syn keyword ngxDirectiveThirdParty contained file_in_unzip_extract - -" An asynchronous domain name resolve module for nginx upstream -" https://github.com/wdaike/ngx_upstream_jdomain -syn keyword ngxDirectiveThirdParty contained jdomain - -" Nginx url encoding converting module -" https://github.com/vozlt/nginx-module-url -syn keyword ngxDirectiveThirdParty contained url_encoding_convert -syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size -syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size_x -syn keyword ngxDirectiveThirdParty contained url_encoding_convert_from -syn keyword ngxDirectiveThirdParty contained url_encoding_convert_phase -syn keyword ngxDirectiveThirdParty contained url_encoding_convert_to - -" A nginx module to match browsers and crawlers -" https://github.com/alibaba/nginx-http-user-agent -syn keyword ngxDirectiveThirdParty contained user_agent - -" nginx load-balancer module implementing ketama consistent hashing -" https://github.com/flygoast/ngx_http_upstream_ketama_chash -syn keyword ngxDirectiveThirdParty contained ketama_chash - - - - -" highlight - -hi link ngxComment Comment -hi link ngxParamComment Comment -hi link ngxListenComment Comment -hi link ngxVariable Identifier -hi link ngxVariableString PreProc -hi link ngxString String -hi link ngxListenString String - -hi link ngxBoolean Boolean -hi link ngxDirectiveBlock Statement -hi link ngxDirectiveImportant Type -hi link ngxDirectiveListen Type -hi link ngxDirectiveControl Keyword -hi link ngxDirectiveError Constant -hi link ngxDirectiveDeprecated Error -hi link ngxDirective Identifier -hi link ngxDirectiveThirdParty Special -hi link ngxDirectiveThirdPartyDeprecated Error - -hi link ngxListenOptions Keyword -hi link ngxListenOptionsDeprecated Error - -let b:current_syntax = "nginx" diff --git a/nginx-1.18.0/docs/CHANGES b/nginx-1.18.0/docs/CHANGES deleted file mode 100644 index 6da9172..0000000 --- a/nginx-1.18.0/docs/CHANGES +++ /dev/null @@ -1,8508 +0,0 @@ - -Changes with nginx 1.18.0 21 Apr 2020 - - *) 1.18.x stable branch. - - -Changes with nginx 1.17.10 14 Apr 2020 - - *) Feature: the "auth_delay" directive. - - -Changes with nginx 1.17.9 03 Mar 2020 - - *) Change: now nginx does not allow several "Host" request header lines. - - *) Bugfix: nginx ignored additional "Transfer-Encoding" request header - lines. - - *) Bugfix: socket leak when using HTTP/2. - - *) Bugfix: a segmentation fault might occur in a worker process if OCSP - stapling was used. - - *) Bugfix: in the ngx_http_mp4_module. - - *) Bugfix: nginx used status code 494 instead of 400 if errors with code - 494 were redirected with the "error_page" directive. - - *) Bugfix: socket leak when using subrequests in the njs module and the - "aio" directive. - - -Changes with nginx 1.17.8 21 Jan 2020 - - *) Feature: variables support in the "grpc_pass" directive. - - *) Bugfix: a timeout might occur while handling pipelined requests in an - SSL connection; the bug had appeared in 1.17.5. - - *) Bugfix: in the "debug_points" directive when using HTTP/2. - Thanks to Daniil Bondarev. - - -Changes with nginx 1.17.7 24 Dec 2019 - - *) Bugfix: a segmentation fault might occur on start or during - reconfiguration if the "rewrite" directive with an empty replacement - string was used in the configuration. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "break" directive was used with the "alias" directive or with the - "proxy_pass" directive with a URI. - - *) Bugfix: the "Location" response header line might contain garbage if - the request URI was rewritten to the one containing a null character. - - *) Bugfix: requests with bodies were handled incorrectly when returning - redirections with the "error_page" directive; the bug had appeared in - 0.7.12. - - *) Bugfix: socket leak when using HTTP/2. - - *) Bugfix: a timeout might occur while handling pipelined requests in an - SSL connection; the bug had appeared in 1.17.5. - - *) Bugfix: in the ngx_http_dav_module. - - -Changes with nginx 1.17.6 19 Nov 2019 - - *) Feature: the $proxy_protocol_server_addr and - $proxy_protocol_server_port variables. - - *) Feature: the "limit_conn_dry_run" directive. - - *) Feature: the $limit_req_status and $limit_conn_status variables. - - -Changes with nginx 1.17.5 22 Oct 2019 - - *) Feature: now nginx uses ioctl(FIONREAD), if available, to avoid - reading from a fast connection for a long time. - - *) Bugfix: incomplete escaped characters at the end of the request URI - were ignored. - - *) Bugfix: "/." and "/.." at the end of the request URI were not - normalized. - - *) Bugfix: in the "merge_slashes" directive. - - *) Bugfix: in the "ignore_invalid_headers" directive. - Thanks to Alan Kemp. - - *) Bugfix: nginx could not be built with MinGW-w64 gcc 8.1 or newer. - - -Changes with nginx 1.17.4 24 Sep 2019 - - *) Change: better detection of incorrect client behavior in HTTP/2. - - *) Change: in handling of not fully read client request body when - returning errors in HTTP/2. - - *) Bugfix: the "worker_shutdown_timeout" directive might not work when - using HTTP/2. - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2 and the "proxy_request_buffering" directive. - - *) Bugfix: the ECONNABORTED error log level was "crit" instead of - "error" on Windows when using SSL. - - *) Bugfix: nginx ignored extra data when using chunked transfer - encoding. - - *) Bugfix: nginx always returned the 500 error if the "return" directive - was used and an error occurred during reading client request body. - - *) Bugfix: in memory allocation error handling. - - -Changes with nginx 1.17.3 13 Aug 2019 - - *) Security: when using HTTP/2 a client might cause excessive memory - consumption and CPU usage (CVE-2019-9511, CVE-2019-9513, - CVE-2019-9516). - - *) Bugfix: "zero size buf" alerts might appear in logs when using - gzipping; the bug had appeared in 1.17.2. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "resolver" directive was used in SMTP proxy. - - -Changes with nginx 1.17.2 23 Jul 2019 - - *) Change: minimum supported zlib version is 1.2.0.4. - Thanks to Ilya Leoshkevich. - - *) Change: the $r->internal_redirect() embedded perl method now expects - escaped URIs. - - *) Feature: it is now possible to switch to a named location using the - $r->internal_redirect() embedded perl method. - - *) Bugfix: in error handling in embedded perl. - - *) Bugfix: a segmentation fault might occur on start or during - reconfiguration if hash bucket size larger than 64 kilobytes was used - in the configuration. - - *) Bugfix: nginx might hog CPU during unbuffered proxying and when - proxying WebSocket connections if the select, poll, or /dev/poll - methods were used. - - *) Bugfix: in the ngx_http_xslt_filter_module. - - *) Bugfix: in the ngx_http_ssi_filter_module. - - -Changes with nginx 1.17.1 25 Jun 2019 - - *) Feature: the "limit_req_dry_run" directive. - - *) Feature: when using the "hash" directive inside the "upstream" block - an empty hash key now triggers round-robin balancing. - Thanks to Niklas Keller. - - *) Bugfix: a segmentation fault might occur in a worker process if - caching was used along with the "image_filter" directive, and errors - with code 415 were redirected with the "error_page" directive; the - bug had appeared in 1.11.10. - - *) Bugfix: a segmentation fault might occur in a worker process if - embedded perl was used; the bug had appeared in 1.7.3. - - -Changes with nginx 1.17.0 21 May 2019 - - *) Feature: variables support in the "limit_rate" and "limit_rate_after" - directives. - - *) Feature: variables support in the "proxy_upload_rate" and - "proxy_download_rate" directives in the stream module. - - *) Change: minimum supported OpenSSL version is 0.9.8. - - *) Change: now the postpone filter is always built. - - *) Bugfix: the "include" directive did not work inside the "if" and - "limit_except" blocks. - - *) Bugfix: in byte ranges processing. - - -Changes with nginx 1.15.12 16 Apr 2019 - - *) Bugfix: a segmentation fault might occur in a worker process if - variables were used in the "ssl_certificate" or "ssl_certificate_key" - directives and OCSP stapling was enabled. - - -Changes with nginx 1.15.11 09 Apr 2019 - - *) Bugfix: in the "ssl_stapling_file" directive on Windows. - - -Changes with nginx 1.15.10 26 Mar 2019 - - *) Change: when using a hostname in the "listen" directive nginx now - creates listening sockets for all addresses the hostname resolves to - (previously, only the first address was used). - - *) Feature: port ranges in the "listen" directive. - - *) Feature: loading of SSL certificates and secret keys from variables. - - *) Workaround: the $ssl_server_name variable might be empty when using - OpenSSL 1.1.1. - - *) Bugfix: nginx/Windows could not be built with Visual Studio 2015 or - newer; the bug had appeared in 1.15.9. - - -Changes with nginx 1.15.9 26 Feb 2019 - - *) Feature: variables support in the "ssl_certificate" and - "ssl_certificate_key" directives. - - *) Feature: the "poll" method is now available on Windows when using - Windows Vista or newer. - - *) Bugfix: if the "select" method was used on Windows and an error - occurred while establishing a backend connection, nginx waited for - the connection establishment timeout to expire. - - *) Bugfix: the "proxy_upload_rate" and "proxy_download_rate" directives - in the stream module worked incorrectly when proxying UDP datagrams. - - -Changes with nginx 1.15.8 25 Dec 2018 - - *) Feature: the $upstream_bytes_sent variable. - Thanks to Piotr Sikora. - - *) Feature: new directives in vim syntax highlighting scripts. - Thanks to Gena Makhomed. - - *) Bugfix: in the "proxy_cache_background_update" directive. - - *) Bugfix: in the "geo" directive when using unix domain listen sockets. - - *) Workaround: the "ignoring stale global SSL error ... bad length" - alerts might appear in logs when using the "ssl_early_data" directive - with OpenSSL. - - *) Bugfix: in nginx/Windows. - - *) Bugfix: in the ngx_http_autoindex_module on 32-bit platforms. - - -Changes with nginx 1.15.7 27 Nov 2018 - - *) Feature: the "proxy_requests" directive in the stream module. - - *) Feature: the "delay" parameter of the "limit_req" directive. - Thanks to Vladislav Shabanov and Peter Shchuchkin. - - *) Bugfix: memory leak on errors during reconfiguration. - - *) Bugfix: in the $upstream_response_time, $upstream_connect_time, and - $upstream_header_time variables. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_mp4_module was used on 32-bit platforms. - - -Changes with nginx 1.15.6 06 Nov 2018 - - *) Security: when using HTTP/2 a client might cause excessive memory - consumption (CVE-2018-16843) and CPU usage (CVE-2018-16844). - - *) Security: processing of a specially crafted mp4 file with the - ngx_http_mp4_module might result in worker process memory disclosure - (CVE-2018-16845). - - *) Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive", - "grpc_socket_keepalive", "memcached_socket_keepalive", - "scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives. - - *) Bugfix: if nginx was built with OpenSSL 1.1.0 and used with OpenSSL - 1.1.1, the TLS 1.3 protocol was always enabled. - - *) Bugfix: working with gRPC backends might result in excessive memory - consumption. - - -Changes with nginx 1.15.5 02 Oct 2018 - - *) Bugfix: a segmentation fault might occur in a worker process when - using OpenSSL 1.1.0h or newer; the bug had appeared in 1.15.4. - - *) Bugfix: of minor potential bugs. - - -Changes with nginx 1.15.4 25 Sep 2018 - - *) Feature: now the "ssl_early_data" directive can be used with OpenSSL. - - *) Bugfix: in the ngx_http_uwsgi_module. - Thanks to Chris Caputo. - - *) Bugfix: connections with some gRPC backends might not be cached when - using the "keepalive" directive. - - *) Bugfix: a socket leak might occur when using the "error_page" - directive to redirect early request processing errors, notably errors - with code 400. - - *) Bugfix: the "return" directive did not change the response code when - returning errors if the request was redirected by the "error_page" - directive. - - *) Bugfix: standard error pages and responses of the - ngx_http_autoindex_module module used the "bgcolor" attribute, and - might be displayed incorrectly when using custom color settings in - browsers. - Thanks to Nova DasSarma. - - *) Change: the logging level of the "no suitable key share" and "no - suitable signature algorithm" SSL errors has been lowered from "crit" - to "info". - - -Changes with nginx 1.15.3 28 Aug 2018 - - *) Feature: now TLSv1.3 can be used with BoringSSL. - - *) Feature: the "ssl_early_data" directive, currently available with - BoringSSL. - - *) Feature: the "keepalive_timeout" and "keepalive_requests" directives - in the "upstream" block. - - *) Bugfix: the ngx_http_dav_module did not truncate destination file - when copying a file over an existing one with the COPY method. - - *) Bugfix: the ngx_http_dav_module used zero access rights on the - destination file and did not preserve file modification time when - moving a file between different file systems with the MOVE method. - - *) Bugfix: the ngx_http_dav_module used default access rights when - copying a file with the COPY method. - - *) Workaround: some clients might not work when using HTTP/2; the bug - had appeared in 1.13.5. - - *) Bugfix: nginx could not be built with LibreSSL 2.8.0. - - -Changes with nginx 1.15.2 24 Jul 2018 - - *) Feature: the $ssl_preread_protocol variable in the - ngx_stream_ssl_preread_module. - - *) Feature: now when using the "reset_timedout_connection" directive - nginx will reset connections being closed with the 444 code. - - *) Change: a logging level of the "http request", "https proxy request", - "unsupported protocol", and "version too low" SSL errors has been - lowered from "crit" to "info". - - *) Bugfix: DNS requests were not resent if initial sending of a request - failed. - - *) Bugfix: the "reuseport" parameter of the "listen" directive was - ignored if the number of worker processes was specified after the - "listen" directive. - - *) Bugfix: when using OpenSSL 1.1.0 or newer it was not possible to - switch off "ssl_prefer_server_ciphers" in a virtual server if it was - switched on in the default server. - - *) Bugfix: SSL session reuse with upstream servers did not work with the - TLS 1.3 protocol. - - -Changes with nginx 1.15.1 03 Jul 2018 - - *) Feature: the "random" directive inside the "upstream" block. - - *) Feature: improved performance when using the "hash" and "ip_hash" - directives with the "zone" directive. - - *) Feature: the "reuseport" parameter of the "listen" directive now uses - SO_REUSEPORT_LB on FreeBSD 12. - - *) Bugfix: HTTP/2 server push did not work if SSL was terminated by a - proxy server in front of nginx. - - *) Bugfix: the "tcp_nopush" directive was always used on backend - connections. - - *) Bugfix: sending a disk-buffered request body to a gRPC backend might - fail. - - -Changes with nginx 1.15.0 05 Jun 2018 - - *) Change: the "ssl" directive is deprecated; the "ssl" parameter of the - "listen" directive should be used instead. - - *) Change: now nginx detects missing SSL certificates during - configuration testing when using the "ssl" parameter of the "listen" - directive. - - *) Feature: now the stream module can handle multiple incoming UDP - datagrams from a client within a single session. - - *) Bugfix: it was possible to specify an incorrect response code in the - "proxy_cache_valid" directive. - - *) Bugfix: nginx could not be built by gcc 8.1. - - *) Bugfix: logging to syslog stopped on local IP address changes. - - *) Bugfix: nginx could not be built by clang with CUDA SDK installed; - the bug had appeared in 1.13.8. - - *) Bugfix: "getsockopt(TCP_FASTOPEN) ... failed" messages might appear - in logs during binary upgrade when using unix domain listen sockets - on FreeBSD. - - *) Bugfix: nginx could not be built on Fedora 28 Linux. - - *) Bugfix: request processing rate might exceed configured rate when - using the "limit_req" directive. - - *) Bugfix: in handling of client addresses when using unix domain listen - sockets to work with datagrams on Linux. - - *) Bugfix: in memory allocation error handling. - - -Changes with nginx 1.13.12 10 Apr 2018 - - *) Bugfix: connections with gRPC backends might be closed unexpectedly - when returning a large response. - - -Changes with nginx 1.13.11 03 Apr 2018 - - *) Feature: the "proxy_protocol" parameter of the "listen" directive now - supports the PROXY protocol version 2. - - *) Bugfix: nginx could not be built with OpenSSL 1.1.1 statically on - Linux. - - *) Bugfix: in the "http_404", "http_500", etc. parameters of the - "proxy_next_upstream" directive. - - -Changes with nginx 1.13.10 20 Mar 2018 - - *) Feature: the "set" parameter of the "include" SSI directive now - allows writing arbitrary responses to a variable; the - "subrequest_output_buffer_size" directive defines maximum response - size. - - *) Feature: now nginx uses clock_gettime(CLOCK_MONOTONIC) if available, - to avoid timeouts being incorrectly triggered on system time changes. - - *) Feature: the "escape=none" parameter of the "log_format" directive. - Thanks to Johannes Baiter and Calin Don. - - *) Feature: the $ssl_preread_alpn_protocols variable in the - ngx_stream_ssl_preread_module. - - *) Feature: the ngx_http_grpc_module. - - *) Bugfix: in memory allocation error handling in the "geo" directive. - - *) Bugfix: when using variables in the "auth_basic_user_file" directive - a null character might appear in logs. - Thanks to Vadim Filimonov. - - -Changes with nginx 1.13.9 20 Feb 2018 - - *) Feature: HTTP/2 server push support; the "http2_push" and - "http2_push_preload" directives. - - *) Bugfix: "header already sent" alerts might appear in logs when using - cache; the bug had appeared in 1.9.13. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "ssl_verify_client" directive was used and no SSL certificate was - specified in a virtual server. - - *) Bugfix: in the ngx_http_v2_module. - - *) Bugfix: in the ngx_http_dav_module. - - -Changes with nginx 1.13.8 26 Dec 2017 - - *) Feature: now nginx automatically preserves the CAP_NET_RAW capability - in worker processes when using the "transparent" parameter of the - "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and - "uwsgi_bind" directives. - - *) Feature: improved CPU cache line size detection. - Thanks to Debayan Ghosh. - - *) Feature: new directives in vim syntax highlighting scripts. - Thanks to Gena Makhomed. - - *) Bugfix: binary upgrade refused to work if nginx was re-parented to a - process with PID different from 1 after its parent process has - finished. - - *) Bugfix: the ngx_http_autoindex_module incorrectly handled requests - with bodies. - - *) Bugfix: in the "proxy_limit_rate" directive when used with the - "keepalive" directive. - - *) Bugfix: some parts of a response might be buffered when using - "proxy_buffering off" if the client connection used SSL. - Thanks to Patryk Lesiewicz. - - *) Bugfix: in the "proxy_cache_background_update" directive. - - *) Bugfix: it was not possible to start a parameter with a variable in - the "${name}" form with the name in curly brackets without enclosing - the parameter into single or double quotes. - - -Changes with nginx 1.13.7 21 Nov 2017 - - *) Bugfix: in the $upstream_status variable. - - *) Bugfix: a segmentation fault might occur in a worker process if a - backend returned a "101 Switching Protocols" response to a - subrequest. - - *) Bugfix: a segmentation fault occurred in a master process if a shared - memory zone size was changed during a reconfiguration and the - reconfiguration failed. - - *) Bugfix: in the ngx_http_fastcgi_module. - - *) Bugfix: nginx returned the 500 error if parameters without variables - were specified in the "xslt_stylesheet" directive. - - *) Workaround: "gzip filter failed to use preallocated memory" alerts - appeared in logs when using a zlib library variant from Intel. - - *) Bugfix: the "worker_shutdown_timeout" directive did not work when - using mail proxy and when proxying WebSocket connections. - - -Changes with nginx 1.13.6 10 Oct 2017 - - *) Bugfix: switching to the next upstream server in the stream module - did not work when using the "ssl_preread" directive. - - *) Bugfix: in the ngx_http_v2_module. - Thanks to Piotr Sikora. - - *) Bugfix: nginx did not support dates after the year 2038 on 32-bit - platforms with 64-bit time_t. - - *) Bugfix: in handling of dates prior to the year 1970 and after the - year 10000. - - *) Bugfix: in the stream module timeouts waiting for UDP datagrams from - upstream servers were not logged or logged at the "info" level - instead of "error". - - *) Bugfix: when using HTTP/2 nginx might return the 400 response without - logging the reason. - - *) Bugfix: in processing of corrupted cache files. - - *) Bugfix: cache control headers were ignored when caching errors - intercepted by error_page. - - *) Bugfix: when using HTTP/2 client request body might be corrupted. - - *) Bugfix: in handling of client addresses when using unix domain - sockets. - - *) Bugfix: nginx hogged CPU when using the "hash ... consistent" - directive in the upstream block if large weights were used and all or - most of the servers were unavailable. - - -Changes with nginx 1.13.5 05 Sep 2017 - - *) Feature: the $ssl_client_escaped_cert variable. - - *) Bugfix: the "ssl_session_ticket_key" directive and the "include" - parameter of the "geo" directive did not work on Windows. - - *) Bugfix: incorrect response length was returned on 32-bit platforms - when requesting more than 4 gigabytes with multiple ranges. - - *) Bugfix: the "expires modified" directive and processing of the - "If-Range" request header line did not use the response last - modification time if proxying without caching was used. - - -Changes with nginx 1.13.4 08 Aug 2017 - - *) Feature: the ngx_http_mirror_module. - - *) Bugfix: client connections might be dropped during configuration - testing when using the "reuseport" parameter of the "listen" - directive on Linux. - - *) Bugfix: request body might not be available in subrequests if it was - saved to a file and proxying was used. - - *) Bugfix: cleaning cache based on the "max_size" parameter did not work - on Windows. - - *) Bugfix: any shared memory allocation required 4096 bytes on Windows. - - *) Bugfix: nginx worker might be terminated abnormally when using the - "zone" directive inside the "upstream" block on Windows. - - -Changes with nginx 1.13.3 11 Jul 2017 - - *) Security: a specially crafted request might result in an integer - overflow and incorrect processing of ranges in the range filter, - potentially resulting in sensitive information leak (CVE-2017-7529). - - -Changes with nginx 1.13.2 27 Jun 2017 - - *) Change: nginx now returns 200 instead of 416 when a range starting - with 0 is requested from an empty file. - - *) Feature: the "add_trailer" directive. - Thanks to Piotr Sikora. - - *) Bugfix: nginx could not be built on Cygwin and NetBSD; the bug had - appeared in 1.13.0. - - *) Bugfix: nginx could not be built under MSYS2 / MinGW 64-bit. - Thanks to Orgad Shaneh. - - *) Bugfix: a segmentation fault might occur in a worker process when - using SSI with many includes and proxy_pass with variables. - - *) Bugfix: in the ngx_http_v2_module. - Thanks to Piotr Sikora. - - -Changes with nginx 1.13.1 30 May 2017 - - *) Feature: now a hostname can be used as the "set_real_ip_from" - directive parameter. - - *) Feature: vim syntax highlighting scripts improvements. - - *) Feature: the "worker_cpu_affinity" directive now works on DragonFly - BSD. - Thanks to Sepherosa Ziehau. - - *) Bugfix: SSL renegotiation on backend connections did not work when - using OpenSSL before 1.1.0. - - *) Workaround: nginx could not be built with Oracle Developer Studio - 12.5. - - *) Workaround: now cache manager ignores long locked cache entries when - cleaning cache based on the "max_size" parameter. - - *) Bugfix: client SSL connections were immediately closed if deferred - accept and the "proxy_protocol" parameter of the "listen" directive - were used. - - *) Bugfix: in the "proxy_cache_background_update" directive. - - *) Workaround: now the "tcp_nodelay" directive sets the TCP_NODELAY - option before an SSL handshake. - - -Changes with nginx 1.13.0 25 Apr 2017 - - *) Change: SSL renegotiation is now allowed on backend connections. - - *) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen" - directives of the mail proxy and stream modules. - - *) Feature: the "return" and "error_page" directives can now be used to - return 308 redirections. - Thanks to Simon Leblanc. - - *) Feature: the "TLSv1.3" parameter of the "ssl_protocols" directive. - - *) Feature: when logging signals nginx now logs PID of the process which - sent the signal. - - *) Bugfix: in memory allocation error handling. - - *) Bugfix: if a server in the stream module listened on a wildcard - address, the source address of a response UDP datagram could differ - from the original datagram destination address. - - -Changes with nginx 1.11.13 04 Apr 2017 - - *) Feature: the "http_429" parameter of the "proxy_next_upstream", - "fastcgi_next_upstream", "scgi_next_upstream", and - "uwsgi_next_upstream" directives. - Thanks to Piotr Sikora. - - *) Bugfix: in memory allocation error handling. - - *) Bugfix: requests might hang when using the "sendfile" and - "timer_resolution" directives on Linux. - - *) Bugfix: requests might hang when using the "sendfile" and "aio_write" - directives with subrequests. - - *) Bugfix: in the ngx_http_v2_module. - Thanks to Piotr Sikora. - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2. - - *) Bugfix: requests might hang when using the "limit_rate", - "sendfile_max_chunk", "limit_req" directives, or the $r->sleep() - embedded perl method with subrequests. - - *) Bugfix: in the ngx_http_slice_module. - - -Changes with nginx 1.11.12 24 Mar 2017 - - *) Bugfix: nginx might hog CPU; the bug had appeared in 1.11.11. - - -Changes with nginx 1.11.11 21 Mar 2017 - - *) Feature: the "worker_shutdown_timeout" directive. - - *) Feature: vim syntax highlighting scripts improvements. - Thanks to Wei-Ko Kao. - - *) Bugfix: a segmentation fault might occur in a worker process if the - $limit_rate variable was set to an empty string. - - *) Bugfix: the "proxy_cache_background_update", - "fastcgi_cache_background_update", "scgi_cache_background_update", - and "uwsgi_cache_background_update" directives might work incorrectly - if the "if" directive was used. - - *) Bugfix: a segmentation fault might occur in a worker process if - number of large_client_header_buffers in a virtual server was - different from the one in the default server. - - *) Bugfix: in the mail proxy server. - - -Changes with nginx 1.11.10 14 Feb 2017 - - *) Change: cache header format has been changed, previously cached - responses will be invalidated. - - *) Feature: support of "stale-while-revalidate" and "stale-if-error" - extensions in the "Cache-Control" backend response header line. - - *) Feature: the "proxy_cache_background_update", - "fastcgi_cache_background_update", "scgi_cache_background_update", - and "uwsgi_cache_background_update" directives. - - *) Feature: nginx is now able to cache responses with the "Vary" header - line up to 128 characters long (instead of 42 characters in previous - versions). - - *) Feature: the "build" parameter of the "server_tokens" directive. - Thanks to Tom Thorogood. - - *) Bugfix: "[crit] SSL_write() failed" messages might appear in logs - when handling requests with the "Expect: 100-continue" request header - line. - - *) Bugfix: the ngx_http_slice_module did not work in named locations. - - *) Bugfix: a segmentation fault might occur in a worker process when - using AIO after an "X-Accel-Redirect" redirection. - - *) Bugfix: reduced memory consumption for long-lived requests using - gzipping. - - -Changes with nginx 1.11.9 24 Jan 2017 - - *) Bugfix: nginx might hog CPU when using the stream module; the bug had - appeared in 1.11.5. - - *) Bugfix: EXTERNAL authentication mechanism in mail proxy was accepted - even if it was not enabled in the configuration. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "ssl_verify_client" directive of the stream module was used. - - *) Bugfix: the "ssl_verify_client" directive of the stream module might - not work. - - *) Bugfix: closing keepalive connections due to no free worker - connections might be too aggressive. - Thanks to Joel Cunningham. - - *) Bugfix: an incorrect response might be returned when using the - "sendfile" directive on FreeBSD and macOS; the bug had appeared in - 1.7.8. - - *) Bugfix: a truncated response might be stored in cache when using the - "aio_write" directive. - - *) Bugfix: a socket leak might occur when using the "aio_write" - directive. - - -Changes with nginx 1.11.8 27 Dec 2016 - - *) Feature: the "absolute_redirect" directive. - - *) Feature: the "escape" parameter of the "log_format" directive. - - *) Feature: client SSL certificates verification in the stream module. - - *) Feature: the "ssl_session_ticket_key" directive supports AES256 - encryption of TLS session tickets when used with 80-byte keys. - - *) Feature: vim-commentary support in vim scripts. - Thanks to Armin Grodon. - - *) Bugfix: recursion when evaluating variables was not limited. - - *) Bugfix: in the ngx_stream_ssl_preread_module. - - *) Bugfix: if a server in an upstream in the stream module failed, it - was considered alive only when a test connection sent to it after - fail_timeout was closed; now a successfully established connection is - enough. - - *) Bugfix: nginx/Windows could not be built with 64-bit Visual Studio. - - *) Bugfix: nginx/Windows could not be built with OpenSSL 1.1.0. - - -Changes with nginx 1.11.7 13 Dec 2016 - - *) Change: now in case of a client certificate verification error the - $ssl_client_verify variable contains a string with the failure - reason, for example, "FAILED:certificate has expired". - - *) Feature: the $ssl_ciphers, $ssl_curves, $ssl_client_v_start, - $ssl_client_v_end, and $ssl_client_v_remain variables. - - *) Feature: the "volatile" parameter of the "map" directive. - - *) Bugfix: dependencies specified for a module were ignored while - building dynamic modules. - - *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request" - directives client request body might be corrupted; the bug had - appeared in 1.11.0. - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2; the bug had appeared in 1.11.3. - - *) Bugfix: in the ngx_http_mp4_module. - Thanks to Congcong Hu. - - *) Bugfix: in the ngx_http_perl_module. - - -Changes with nginx 1.11.6 15 Nov 2016 - - *) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables - has been changed to follow RFC 2253 (RFC 4514); values in the old - format are available in the $ssl_client_s_dn_legacy and - $ssl_client_i_dn_legacy variables. - - *) Change: when storing temporary files in a cache directory they will - be stored in the same subdirectories as corresponding cache files - instead of a separate subdirectory for temporary files. - - *) Feature: EXTERNAL authentication mechanism support in mail proxy. - Thanks to Robert Norris. - - *) Feature: WebP support in the ngx_http_image_filter_module. - - *) Feature: variables support in the "proxy_method" directive. - Thanks to Dmitry Lazurkin. - - *) Feature: the "http2_max_requests" directive in the - ngx_http_v2_module. - - *) Feature: the "proxy_cache_max_range_offset", - "fastcgi_cache_max_range_offset", "scgi_cache_max_range_offset", and - "uwsgi_cache_max_range_offset" directives. - - *) Bugfix: graceful shutdown of old worker processes might require - infinite time when using HTTP/2. - - *) Bugfix: in the ngx_http_mp4_module. - - *) Bugfix: "ignore long locked inactive cache entry" alerts might appear - in logs when proxying WebSocket connections with caching enabled. - - *) Bugfix: nginx did not write anything to log and returned a response - with code 502 instead of 504 when a timeout occurred during an SSL - handshake to a backend. - - -Changes with nginx 1.11.5 11 Oct 2016 - - *) Change: the --with-ipv6 configure option was removed, now IPv6 - support is configured automatically. - - *) Change: now if there are no available servers in an upstream, nginx - will not reset number of failures of all servers as it previously - did, but will wait for fail_timeout to expire. - - *) Feature: the ngx_stream_ssl_preread_module. - - *) Feature: the "server" directive in the "upstream" context supports - the "max_conns" parameter. - - *) Feature: the --with-compat configure option. - - *) Feature: "manager_files", "manager_threshold", and "manager_sleep" - parameters of the "proxy_cache_path", "fastcgi_cache_path", - "scgi_cache_path", and "uwsgi_cache_path" directives. - - *) Bugfix: flags passed by the --with-ld-opt configure option were not - used while building perl module. - - *) Bugfix: in the "add_after_body" directive when used with the - "sub_filter" directive. - - *) Bugfix: in the $realip_remote_addr variable. - - *) Bugfix: the "dav_access", "proxy_store_access", - "fastcgi_store_access", "scgi_store_access", and "uwsgi_store_access" - directives ignored permissions specified for user. - - *) Bugfix: unix domain listen sockets might not be inherited during - binary upgrade on Linux. - - *) Bugfix: nginx returned the 400 response on requests with the "-" - character in the HTTP method. - - -Changes with nginx 1.11.4 13 Sep 2016 - - *) Feature: the $upstream_bytes_received variable. - - *) Feature: the $bytes_received, $session_time, $protocol, $status, - $upstream_addr, $upstream_bytes_sent, $upstream_bytes_received, - $upstream_connect_time, $upstream_first_byte_time, and - $upstream_session_time variables in the stream module. - - *) Feature: the ngx_stream_log_module. - - *) Feature: the "proxy_protocol" parameter of the "listen" directive, - the $proxy_protocol_addr and $proxy_protocol_port variables in the - stream module. - - *) Feature: the ngx_stream_realip_module. - - *) Bugfix: nginx could not be built with the stream module and the - ngx_http_ssl_module, but without ngx_stream_ssl_module; the bug had - appeared in 1.11.3. - - *) Feature: the IP_BIND_ADDRESS_NO_PORT socket option was not used; the - bug had appeared in 1.11.2. - - *) Bugfix: in the "ranges" parameter of the "geo" directive. - - *) Bugfix: an incorrect response might be returned when using the "aio - threads" and "sendfile" directives; the bug had appeared in 1.9.13. - - -Changes with nginx 1.11.3 26 Jul 2016 - - *) Change: now the "accept_mutex" directive is turned off by default. - - *) Feature: now nginx uses EPOLLEXCLUSIVE on Linux. - - *) Feature: the ngx_stream_geo_module. - - *) Feature: the ngx_stream_geoip_module. - - *) Feature: the ngx_stream_split_clients_module. - - *) Feature: variables support in the "proxy_pass" and "proxy_ssl_name" - directives in the stream module. - - *) Bugfix: socket leak when using HTTP/2. - - *) Bugfix: in configure tests. - Thanks to Piotr Sikora. - - -Changes with nginx 1.11.2 05 Jul 2016 - - *) Change: now nginx always uses internal MD5 and SHA1 implementations; - the --with-md5 and --with-sha1 configure options were canceled. - - *) Feature: variables support in the stream module. - - *) Feature: the ngx_stream_map_module. - - *) Feature: the ngx_stream_return_module. - - *) Feature: a port can be specified in the "proxy_bind", "fastcgi_bind", - "memcached_bind", "scgi_bind", and "uwsgi_bind" directives. - - *) Feature: now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option - when available. - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2 and the "proxy_request_buffering" directive. - - *) Bugfix: the "Content-Length" request header line was always added to - requests passed to backends, including requests without body, when - using HTTP/2. - - *) Bugfix: "http request count is zero" alerts might appear in logs when - using HTTP/2. - - *) Bugfix: unnecessary buffering might occur when using the "sub_filter" - directive; the issue had appeared in 1.9.4. - - -Changes with nginx 1.11.1 31 May 2016 - - *) Security: a segmentation fault might occur in a worker process while - writing a specially crafted request body to a temporary file - (CVE-2016-4450); the bug had appeared in 1.3.9. - - -Changes with nginx 1.11.0 24 May 2016 - - *) Feature: the "transparent" parameter of the "proxy_bind", - "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" - directives. - - *) Feature: the $request_id variable. - - *) Feature: the "map" directive supports combinations of multiple - variables as resulting values. - - *) Feature: now nginx checks if EPOLLRDHUP events are supported by - kernel, and optimizes connection handling accordingly if the "epoll" - method is used. - - *) Feature: the "ssl_certificate" and "ssl_certificate_key" directives - can be specified multiple times to load certificates of different - types (for example, RSA and ECDSA). - - *) Feature: the "ssl_ecdh_curve" directive now allows specifying a list - of curves when using OpenSSL 1.0.2 or newer; by default a list built - into OpenSSL is used. - - *) Change: to use DHE ciphers it is now required to specify parameters - using the "ssl_dhparam" directive. - - *) Feature: the $proxy_protocol_port variable. - - *) Feature: the $realip_remote_port variable in the - ngx_http_realip_module. - - *) Feature: the ngx_http_realip_module is now able to set the client - port in addition to the address. - - *) Change: the "421 Misdirected Request" response now used when - rejecting requests to a virtual server different from one negotiated - during an SSL handshake; this improves interoperability with some - HTTP/2 clients when using client certificates. - - *) Change: HTTP/2 clients can now start sending request body - immediately; the "http2_body_preread_size" directive controls size of - the buffer used before nginx will start reading client request body. - - *) Bugfix: cached error responses were not updated when using the - "proxy_cache_bypass" directive. - - -Changes with nginx 1.9.15 19 Apr 2016 - - *) Bugfix: "recv() failed" errors might occur when using HHVM as a - FastCGI server. - - *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request" - directives a timeout or a "client violated flow control" error might - occur while reading client request body; the bug had appeared in - 1.9.14. - - *) Workaround: a response might not be shown by some browsers if HTTP/2 - was used and client request body was not fully read; the bug had - appeared in 1.9.14. - - *) Bugfix: connections might hang when using the "aio threads" - directive. - Thanks to Mindaugas Rasiukevicius. - - -Changes with nginx 1.9.14 05 Apr 2016 - - *) Feature: OpenSSL 1.1.0 compatibility. - - *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering", - "scgi_request_buffering", and "uwsgi_request_buffering" directives - now work with HTTP/2. - - *) Bugfix: "zero size buf in output" alerts might appear in logs when - using HTTP/2. - - *) Bugfix: the "client_max_body_size" directive might work incorrectly - when using HTTP/2. - - *) Bugfix: of minor bugs in logging. - - -Changes with nginx 1.9.13 29 Mar 2016 - - *) Change: non-idempotent requests (POST, LOCK, PATCH) are no longer - passed to the next server by default if a request has been sent to a - backend; the "non_idempotent" parameter of the "proxy_next_upstream" - directive explicitly allows retrying such requests. - - *) Feature: the ngx_http_perl_module can be built dynamically. - - *) Feature: UDP support in the stream module. - - *) Feature: the "aio_write" directive. - - *) Feature: now cache manager monitors number of elements in caches and - tries to avoid cache keys zone overflows. - - *) Bugfix: "task already active" and "second aio post" alerts might - appear in logs when using the "sendfile" and "aio" directives with - subrequests. - - *) Bugfix: "zero size buf in output" alerts might appear in logs if - caching was used and a client closed a connection prematurely. - - *) Bugfix: connections with clients might be closed needlessly if - caching was used. - Thanks to Justin Li. - - *) Bugfix: nginx might hog CPU if the "sendfile" directive was used on - Linux or Solaris and a file being sent was changed during sending. - - *) Bugfix: connections might hang when using the "sendfile" and "aio - threads" directives. - - *) Bugfix: in the "proxy_pass", "fastcgi_pass", "scgi_pass", and - "uwsgi_pass" directives when using variables. - Thanks to Piotr Sikora. - - *) Bugfix: in the ngx_http_sub_filter_module. - - *) Bugfix: if an error occurred in a cached backend connection, the - request was passed to the next server regardless of the - proxy_next_upstream directive. - - *) Bugfix: "CreateFile() failed" errors when creating temporary files on - Windows. - - -Changes with nginx 1.9.12 24 Feb 2016 - - *) Feature: Huffman encoding of response headers in HTTP/2. - Thanks to Vlad Krasnov. - - *) Feature: the "worker_cpu_affinity" directive now supports more than - 64 CPUs. - - *) Bugfix: compatibility with 3rd party C++ modules; the bug had - appeared in 1.9.11. - Thanks to Piotr Sikora. - - *) Bugfix: nginx could not be built statically with OpenSSL on Linux; - the bug had appeared in 1.9.11. - - *) Bugfix: the "add_header ... always" directive with an empty value did - not delete "Last-Modified" and "ETag" header lines from error - responses. - - *) Workaround: "called a function you should not call" and "shutdown - while in init" messages might appear in logs when using OpenSSL - 1.0.2f. - - *) Bugfix: invalid headers might be logged incorrectly. - - *) Bugfix: socket leak when using HTTP/2. - - *) Bugfix: in the ngx_http_v2_module. - - -Changes with nginx 1.9.11 09 Feb 2016 - - *) Feature: TCP support in resolver. - - *) Feature: dynamic modules. - - *) Bugfix: the $request_length variable did not include size of request - headers when using HTTP/2. - - *) Bugfix: in the ngx_http_v2_module. - - -Changes with nginx 1.9.10 26 Jan 2016 - - *) Security: invalid pointer dereference might occur during DNS server - response processing if the "resolver" directive was used, allowing an - attacker who is able to forge UDP packets from the DNS server to - cause segmentation fault in a worker process (CVE-2016-0742). - - *) Security: use-after-free condition might occur during CNAME response - processing if the "resolver" directive was used, allowing an attacker - who is able to trigger name resolution to cause segmentation fault in - a worker process, or might have potential other impact - (CVE-2016-0746). - - *) Security: CNAME resolution was insufficiently limited if the - "resolver" directive was used, allowing an attacker who is able to - trigger arbitrary name resolution to cause excessive resource - consumption in worker processes (CVE-2016-0747). - - *) Feature: the "auto" parameter of the "worker_cpu_affinity" directive. - - *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did - not work with IPv6 listen sockets. - - *) Bugfix: connections to upstream servers might be cached incorrectly - when using the "keepalive" directive. - - *) Bugfix: proxying used the HTTP method of the original request after - an "X-Accel-Redirect" redirection. - - -Changes with nginx 1.9.9 09 Dec 2015 - - *) Bugfix: proxying to unix domain sockets did not work when using - variables; the bug had appeared in 1.9.8. - - -Changes with nginx 1.9.8 08 Dec 2015 - - *) Feature: pwritev() support. - - *) Feature: the "include" directive inside the "upstream" block. - - *) Feature: the ngx_http_slice_module. - - *) Bugfix: a segmentation fault might occur in a worker process when - using LibreSSL; the bug had appeared in 1.9.6. - - *) Bugfix: nginx could not be built on OS X in some cases. - - -Changes with nginx 1.9.7 17 Nov 2015 - - *) Feature: the "nohostname" parameter of logging to syslog. - - *) Feature: the "proxy_cache_convert_head" directive. - - *) Feature: the $realip_remote_addr variable in the - ngx_http_realip_module. - - *) Bugfix: the "expires" directive might not work when using variables. - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2; the bug had appeared in 1.9.6. - - *) Bugfix: if nginx was built with the ngx_http_v2_module it was - possible to use the HTTP/2 protocol even if the "http2" parameter of - the "listen" directive was not specified. - - *) Bugfix: in the ngx_http_v2_module. - - -Changes with nginx 1.9.6 27 Oct 2015 - - *) Bugfix: a segmentation fault might occur in a worker process when - using HTTP/2. - Thanks to Piotr Sikora and Denis Andzakovic. - - *) Bugfix: the $server_protocol variable was empty when using HTTP/2. - - *) Bugfix: backend SSL connections in the stream module might be timed - out unexpectedly. - - *) Bugfix: a segmentation fault might occur in a worker process if - different ssl_session_cache settings were used in different virtual - servers. - - *) Bugfix: nginx/Windows could not be built with MinGW gcc; the bug had - appeared in 1.9.4. - Thanks to Kouhei Sutou. - - *) Bugfix: time was not updated when the timer_resolution directive was - used on Windows. - - *) Miscellaneous minor fixes and improvements. - Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora. - - -Changes with nginx 1.9.5 22 Sep 2015 - - *) Feature: the ngx_http_v2_module (replaces ngx_http_spdy_module). - Thanks to Dropbox and Automattic for sponsoring this work. - - *) Change: now the "output_buffers" directive uses two buffers by - default. - - *) Change: now nginx limits subrequests recursion, not simultaneous - subrequests. - - *) Change: now nginx checks the whole cache key when returning a - response from cache. - Thanks to Gena Makhomed and Sergey Brester. - - *) Bugfix: "header already sent" alerts might appear in logs when using - cache; the bug had appeared in 1.7.5. - - *) Bugfix: "writev() failed (4: Interrupted system call)" errors might - appear in logs when using CephFS and the "timer_resolution" directive - on Linux. - - *) Bugfix: in invalid configurations handling. - Thanks to Markus Linnala. - - *) Bugfix: a segmentation fault occurred in a worker process if the - "sub_filter" directive was used at http level; the bug had appeared - in 1.9.4. - - -Changes with nginx 1.9.4 18 Aug 2015 - - *) Change: the "proxy_downstream_buffer" and "proxy_upstream_buffer" - directives of the stream module are replaced with the - "proxy_buffer_size" directive. - - *) Feature: the "tcp_nodelay" directive in the stream module. - - *) Feature: multiple "sub_filter" directives can be used simultaneously. - - *) Feature: variables support in the search string of the "sub_filter" - directive. - - *) Workaround: configuration testing might fail under Linux OpenVZ. - Thanks to Gena Makhomed. - - *) Bugfix: old worker processes might hog CPU after reconfiguration with - a large number of worker_connections. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "try_files" and "alias" directives were used inside a location given - by a regular expression; the bug had appeared in 1.7.1. - - *) Bugfix: the "try_files" directive inside a nested location given by a - regular expression worked incorrectly if the "alias" directive was - used in the outer location. - - *) Bugfix: in hash table initialization error handling. - - *) Bugfix: nginx could not be built with Visual Studio 2015. - - -Changes with nginx 1.9.3 14 Jul 2015 - - *) Change: duplicate "http", "mail", and "stream" blocks are now - disallowed. - - *) Feature: connection limiting in the stream module. - - *) Feature: data rate limiting in the stream module. - - *) Bugfix: the "zone" directive inside the "upstream" block did not work - on Windows. - - *) Bugfix: compatibility with LibreSSL in the stream module. - Thanks to Piotr Sikora. - - *) Bugfix: in the "--builddir" configure parameter. - Thanks to Piotr Sikora. - - *) Bugfix: the "ssl_stapling_file" directive did not work; the bug had - appeared in 1.9.2. - Thanks to Faidon Liambotis and Brandon Black. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "ssl_stapling" directive was used; the bug had appeared in 1.9.2. - Thanks to Matthew Baldwin. - - -Changes with nginx 1.9.2 16 Jun 2015 - - *) Feature: the "backlog" parameter of the "listen" directives of the - mail proxy and stream modules. - - *) Feature: the "allow" and "deny" directives in the stream module. - - *) Feature: the "proxy_bind" directive in the stream module. - - *) Feature: the "proxy_protocol" directive in the stream module. - - *) Feature: the -T switch. - - *) Feature: the REQUEST_SCHEME parameter added to the fastcgi.conf, - fastcgi_params, scgi_params, and uwsgi_params standard configuration - files. - - *) Bugfix: the "reuseport" parameter of the "listen" directive of the - stream module did not work. - - *) Bugfix: OCSP stapling might return an expired OCSP response in some - cases. - - -Changes with nginx 1.9.1 26 May 2015 - - *) Change: now SSLv3 protocol is disabled by default. - - *) Change: some long deprecated directives are not supported anymore. - - *) Feature: the "reuseport" parameter of the "listen" directive. - Thanks to Yingqi Lu at Intel and Sepherosa Ziehau. - - *) Feature: the $upstream_connect_time variable. - - *) Bugfix: in the "hash" directive on big-endian platforms. - - *) Bugfix: nginx might fail to start on some old Linux variants; the bug - had appeared in 1.7.11. - - *) Bugfix: in IP address parsing. - Thanks to Sergey Polovko. - - -Changes with nginx 1.9.0 28 Apr 2015 - - *) Change: obsolete aio and rtsig event methods have been removed. - - *) Feature: the "zone" directive inside the "upstream" block. - - *) Feature: the stream module. - - *) Feature: byte ranges support in the ngx_http_memcached_module. - Thanks to Martin Mlynář. - - *) Feature: shared memory can now be used on Windows versions with - address space layout randomization. - Thanks to Sergey Brester. - - *) Feature: the "error_log" directive can now be used on mail and server - levels in mail proxy. - - *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did - not work if not specified in the first "listen" directive for a - listen socket. - - -Changes with nginx 1.7.12 07 Apr 2015 - - *) Feature: now the "tcp_nodelay" directive works with backend SSL - connections. - - *) Feature: now thread pools can be used to read cache file headers. - - *) Bugfix: in the "proxy_request_buffering" directive. - - *) Bugfix: a segmentation fault might occur in a worker process when - using thread pools on Linux. - - *) Bugfix: in error handling when using the "ssl_stapling" directive. - Thanks to Filipe da Silva. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.7.11 24 Mar 2015 - - *) Change: the "sendfile" parameter of the "aio" directive is - deprecated; now nginx automatically uses AIO to pre-load data for - sendfile if both "aio" and "sendfile" directives are used. - - *) Feature: experimental thread pools support. - - *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering", - "scgi_request_buffering", and "uwsgi_request_buffering" directives. - - *) Feature: request body filters experimental API. - - *) Feature: client SSL certificates support in mail proxy. - Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva. - - *) Feature: startup speedup when using the "hash ... consistent" - directive in the upstream block. - Thanks to Wai Keen Woon. - - *) Feature: debug logging into a cyclic memory buffer. - - *) Bugfix: in hash table handling. - Thanks to Chris West. - - *) Bugfix: in the "proxy_cache_revalidate" directive. - - *) Bugfix: SSL connections might hang if deferred accept or the - "proxy_protocol" parameter of the "listen" directive were used. - Thanks to James Hamlin. - - *) Bugfix: the $upstream_response_time variable might contain a wrong - value if the "image_filter" directive was used. - - *) Bugfix: in integer overflow handling. - Thanks to Régis Leroy. - - *) Bugfix: it was not possible to enable SSLv3 with LibreSSL. - - *) Bugfix: the "ignoring stale global SSL error ... called a function - you should not call" alerts appeared in logs when using LibreSSL. - - *) Bugfix: certificates specified by the "ssl_client_certificate" and - "ssl_trusted_certificate" directives were inadvertently used to - automatically construct certificate chains. - - -Changes with nginx 1.7.10 10 Feb 2015 - - *) Feature: the "use_temp_path" parameter of the "proxy_cache_path", - "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path" - directives. - - *) Feature: the $upstream_header_time variable. - - *) Workaround: now on disk overflow nginx tries to write error logs once - a second only. - - *) Bugfix: the "try_files" directive did not ignore normal files while - testing directories. - Thanks to Damien Tournoud. - - *) Bugfix: alerts "sendfile() failed" if the "sendfile" directive was - used on OS X; the bug had appeared in 1.7.8. - - *) Bugfix: alerts "sem_post() failed" might appear in logs. - - *) Bugfix: nginx could not be built with musl libc. - Thanks to James Taylor. - - *) Bugfix: nginx could not be built on Tru64 UNIX. - Thanks to Goetz T. Fischer. - - -Changes with nginx 1.7.9 23 Dec 2014 - - *) Feature: variables support in the "proxy_cache", "fastcgi_cache", - "scgi_cache", and "uwsgi_cache" directives. - - *) Feature: variables support in the "expires" directive. - - *) Feature: loading of secret keys from hardware tokens with OpenSSL - engines. - Thanks to Dmitrii Pichulin. - - *) Feature: the "autoindex_format" directive. - - *) Bugfix: cache revalidation is now only used for responses with 200 - and 206 status codes. - Thanks to Piotr Sikora. - - *) Bugfix: the "TE" client request header line was passed to backends - while proxying. - - *) Bugfix: the "proxy_pass", "fastcgi_pass", "scgi_pass", and - "uwsgi_pass" directives might not work correctly inside the "if" and - "limit_except" blocks. - - *) Bugfix: the "proxy_store" directive with the "on" parameter was - ignored if the "proxy_store" directive with an explicitly specified - file path was used on a previous level. - - *) Bugfix: nginx could not be built with BoringSSL. - Thanks to Lukas Tribus. - - -Changes with nginx 1.7.8 02 Dec 2014 - - *) Change: now the "If-Modified-Since", "If-Range", etc. client request - header lines are passed to a backend while caching if nginx knows in - advance that the response will not be cached (e.g., when using - proxy_cache_min_uses). - - *) Change: now after proxy_cache_lock_timeout nginx sends a request to a - backend with caching disabled; the new directives - "proxy_cache_lock_age", "fastcgi_cache_lock_age", - "scgi_cache_lock_age", and "uwsgi_cache_lock_age" specify a time - after which the lock will be released and another attempt to cache a - response will be made. - - *) Change: the "log_format" directive can now be used only at http - level. - - *) Feature: the "proxy_ssl_certificate", "proxy_ssl_certificate_key", - "proxy_ssl_password_file", "uwsgi_ssl_certificate", - "uwsgi_ssl_certificate_key", and "uwsgi_ssl_password_file" - directives. - Thanks to Piotr Sikora. - - *) Feature: it is now possible to switch to a named location using - "X-Accel-Redirect". - Thanks to Toshikuni Fukaya. - - *) Feature: now the "tcp_nodelay" directive works with SPDY connections. - - *) Feature: new directives in vim syntax highliting scripts. - Thanks to Peter Wu. - - *) Bugfix: nginx ignored the "s-maxage" value in the "Cache-Control" - backend response header line. - Thanks to Piotr Sikora. - - *) Bugfix: in the ngx_http_spdy_module. - Thanks to Piotr Sikora. - - *) Bugfix: in the "ssl_password_file" directive when using OpenSSL - 0.9.8zc, 1.0.0o, 1.0.1j. - - *) Bugfix: alerts "header already sent" appeared in logs if the - "post_action" directive was used; the bug had appeared in 1.5.4. - - *) Bugfix: alerts "the http output chain is empty" might appear in logs - if the "postpone_output 0" directive was used with SSI includes. - - *) Bugfix: in the "proxy_cache_lock" directive with SSI subrequests. - Thanks to Yichun Zhang. - - -Changes with nginx 1.7.7 28 Oct 2014 - - *) Change: now nginx takes into account the "Vary" header line in a - backend response while caching. - - *) Feature: the "proxy_force_ranges", "fastcgi_force_ranges", - "scgi_force_ranges", and "uwsgi_force_ranges" directives. - - *) Feature: the "proxy_limit_rate", "fastcgi_limit_rate", - "scgi_limit_rate", and "uwsgi_limit_rate" directives. - - *) Feature: the "Vary" parameter of the "proxy_ignore_headers", - "fastcgi_ignore_headers", "scgi_ignore_headers", and - "uwsgi_ignore_headers" directives. - - *) Bugfix: the last part of a response received from a backend with - unbufferred proxy might not be sent to a client if "gzip" or "gunzip" - directives were used. - - *) Bugfix: in the "proxy_cache_revalidate" directive. - Thanks to Piotr Sikora. - - *) Bugfix: in error handling. - Thanks to Yichun Zhang and Daniil Bondarev. - - *) Bugfix: in the "proxy_next_upstream_tries" and - "proxy_next_upstream_timeout" directives. - Thanks to Feng Gu. - - *) Bugfix: nginx/Windows could not be built with MinGW-w64 gcc. - Thanks to Kouhei Sutou. - - -Changes with nginx 1.7.6 30 Sep 2014 - - *) Change: the deprecated "limit_zone" directive is not supported - anymore. - - *) Feature: the "limit_conn_zone" and "limit_req_zone" directives now - can be used with combinations of multiple variables. - - *) Bugfix: request body might be transmitted incorrectly when retrying a - FastCGI request to the next upstream server. - - *) Bugfix: in logging to syslog. - - -Changes with nginx 1.7.5 16 Sep 2014 - - *) Security: it was possible to reuse SSL sessions in unrelated contexts - if a shared SSL session cache or the same TLS session ticket key was - used for multiple "server" blocks (CVE-2014-3616). - Thanks to Antoine Delignat-Lavaud. - - *) Change: now the "stub_status" directive does not require a parameter. - - *) Feature: the "always" parameter of the "add_header" directive. - - *) Feature: the "proxy_next_upstream_tries", - "proxy_next_upstream_timeout", "fastcgi_next_upstream_tries", - "fastcgi_next_upstream_timeout", "memcached_next_upstream_tries", - "memcached_next_upstream_timeout", "scgi_next_upstream_tries", - "scgi_next_upstream_timeout", "uwsgi_next_upstream_tries", and - "uwsgi_next_upstream_timeout" directives. - - *) Bugfix: in the "if" parameter of the "access_log" directive. - - *) Bugfix: in the ngx_http_perl_module. - Thanks to Piotr Sikora. - - *) Bugfix: the "listen" directive of the mail proxy module did not allow - to specify more than two parameters. - - *) Bugfix: the "sub_filter" directive did not work with a string to - replace consisting of a single character. - - *) Bugfix: requests might hang if resolver was used and a timeout - occurred during a DNS request. - - *) Bugfix: in the ngx_http_spdy_module when using with AIO. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "set" directive was used to change the "$http_...", "$sent_http_...", - or "$upstream_http_..." variables. - - *) Bugfix: in memory allocation error handling. - Thanks to Markus Linnala and Feng Gu. - - -Changes with nginx 1.7.4 05 Aug 2014 - - *) Security: pipelined commands were not discarded after STARTTLS - command in SMTP proxy (CVE-2014-3556); the bug had appeared in 1.5.6. - Thanks to Chris Boulton. - - *) Change: URI escaping now uses uppercase hexadecimal digits. - Thanks to Piotr Sikora. - - *) Feature: now nginx can be build with BoringSSL and LibreSSL. - Thanks to Piotr Sikora. - - *) Bugfix: requests might hang if resolver was used and a DNS server - returned a malformed response; the bug had appeared in 1.5.8. - - *) Bugfix: in the ngx_http_spdy_module. - Thanks to Piotr Sikora. - - *) Bugfix: the $uri variable might contain garbage when returning errors - with code 400. - Thanks to Sergey Bobrov. - - *) Bugfix: in error handling in the "proxy_store" directive and the - ngx_http_dav_module. - Thanks to Feng Gu. - - *) Bugfix: a segmentation fault might occur if logging of errors to - syslog was used; the bug had appeared in 1.7.1. - - *) Bugfix: the $geoip_latitude, $geoip_longitude, $geoip_dma_code, and - $geoip_area_code variables might not work. - Thanks to Yichun Zhang. - - *) Bugfix: in memory allocation error handling. - Thanks to Tatsuhiko Kubo and Piotr Sikora. - - -Changes with nginx 1.7.3 08 Jul 2014 - - *) Feature: weak entity tags are now preserved on response - modifications, and strong ones are changed to weak. - - *) Feature: cache revalidation now uses If-None-Match header if - possible. - - *) Feature: the "ssl_password_file" directive. - - *) Bugfix: the If-None-Match request header line was ignored if there - was no Last-Modified header in a response returned from cache. - - *) Bugfix: "peer closed connection in SSL handshake" messages were - logged at "info" level instead of "error" while connecting to - backends. - - *) Bugfix: in the ngx_http_dav_module module in nginx/Windows. - - *) Bugfix: SPDY connections might be closed prematurely if caching was - used. - - -Changes with nginx 1.7.2 17 Jun 2014 - - *) Feature: the "hash" directive inside the "upstream" block. - - *) Feature: defragmentation of free shared memory blocks. - Thanks to Wandenberg Peixoto and Yichun Zhang. - - *) Bugfix: a segmentation fault might occur in a worker process if the - default value of the "access_log" directive was used; the bug had - appeared in 1.7.0. - Thanks to Piotr Sikora. - - *) Bugfix: trailing slash was mistakenly removed from the last parameter - of the "try_files" directive. - - *) Bugfix: nginx could not be built on OS X in some cases. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.7.1 27 May 2014 - - *) Feature: the "$upstream_cookie_..." variables. - - *) Feature: the $ssl_client_fingerprint variable. - - *) Feature: the "error_log" and "access_log" directives now support - logging to syslog. - - *) Feature: the mail proxy now logs client port on connect. - - *) Bugfix: memory leak if the "ssl_stapling" directive was used. - Thanks to Filipe da Silva. - - *) Bugfix: the "alias" directive used inside a location given by a - regular expression worked incorrectly if the "if" or "limit_except" - directives were used. - - *) Bugfix: the "charset" directive did not set a charset to encoded - backend responses. - - *) Bugfix: a "proxy_pass" directive without URI part might use original - request after the $args variable was set. - Thanks to Yichun Zhang. - - *) Bugfix: in the "none" parameter in the "smtp_auth" directive; the bug - had appeared in 1.5.6. - Thanks to Svyatoslav Nikolsky. - - *) Bugfix: if sub_filter and SSI were used together, then responses - might be transferred incorrectly. - - *) Bugfix: nginx could not be built with the --with-file-aio option on - Linux/aarch64. - - -Changes with nginx 1.7.0 24 Apr 2014 - - *) Feature: backend SSL certificate verification. - - *) Feature: support for SNI while working with SSL backends. - - *) Feature: the $ssl_server_name variable. - - *) Feature: the "if" parameter of the "access_log" directive. - - -Changes with nginx 1.5.13 08 Apr 2014 - - *) Change: improved hash table handling; the default values of the - "variables_hash_max_size" and "types_hash_bucket_size" were changed - to 1024 and 64 respectively. - - *) Feature: the ngx_http_mp4_module now supports the "end" argument. - - *) Feature: byte ranges support in the ngx_http_mp4_module and while - saving responses to cache. - - *) Bugfix: alerts "ngx_slab_alloc() failed: no memory" no longer logged - when using shared memory in the "ssl_session_cache" directive and in - the ngx_http_limit_req_module. - - *) Bugfix: the "underscores_in_headers" directive did not allow - underscore as a first character of a header. - Thanks to Piotr Sikora. - - *) Bugfix: cache manager might hog CPU on exit in nginx/Windows. - - *) Bugfix: nginx/Windows terminated abnormally if the - "ssl_session_cache" directive was used with the "shared" parameter. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.5.12 18 Mar 2014 - - *) Security: a heap memory buffer overflow might occur in a worker - process while handling a specially crafted request by - ngx_http_spdy_module, potentially resulting in arbitrary code - execution (CVE-2014-0133). - Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. - Manuel Sadosky, Buenos Aires, Argentina. - - *) Feature: the "proxy_protocol" parameters of the "listen" and - "real_ip_header" directives, the $proxy_protocol_addr variable. - - *) Bugfix: in the "fastcgi_next_upstream" directive. - Thanks to Lucas Molas. - - -Changes with nginx 1.5.11 04 Mar 2014 - - *) Security: memory corruption might occur in a worker process on 32-bit - platforms while handling a specially crafted request by - ngx_http_spdy_module, potentially resulting in arbitrary code - execution (CVE-2014-0088); the bug had appeared in 1.5.10. - Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. - Manuel Sadosky, Buenos Aires, Argentina. - - *) Feature: the $ssl_session_reused variable. - - *) Bugfix: the "client_max_body_size" directive might not work when - reading a request body using chunked transfer encoding; the bug had - appeared in 1.3.9. - Thanks to Lucas Molas. - - *) Bugfix: a segmentation fault might occur in a worker process when - proxying WebSocket connections. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_spdy_module was used on 32-bit platforms; the bug had - appeared in 1.5.10. - - *) Bugfix: the $upstream_status variable might contain wrong data if the - "proxy_cache_use_stale" or "proxy_cache_revalidate" directives were - used. - Thanks to Piotr Sikora. - - *) Bugfix: a segmentation fault might occur in a worker process if - errors with code 400 were redirected to a named location using the - "error_page" directive. - - *) Bugfix: nginx/Windows could not be built with Visual Studio 2013. - - -Changes with nginx 1.5.10 04 Feb 2014 - - *) Feature: the ngx_http_spdy_module now uses SPDY 3.1 protocol. - Thanks to Automattic and MaxCDN for sponsoring this work. - - *) Feature: the ngx_http_mp4_module now skips tracks too short for a - seek requested. - - *) Bugfix: a segmentation fault might occur in a worker process if the - $ssl_session_id variable was used in logs; the bug had appeared in - 1.5.9. - - *) Bugfix: the $date_local and $date_gmt variables used wrong format - outside of the ngx_http_ssi_filter_module. - - *) Bugfix: client connections might be immediately closed if deferred - accept was used; the bug had appeared in 1.3.15. - - *) Bugfix: alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs - during binary upgrade on Linux; the bug had appeared in 1.5.8. - Thanks to Piotr Sikora. - - -Changes with nginx 1.5.9 22 Jan 2014 - - *) Change: now nginx expects escaped URIs in "X-Accel-Redirect" headers. - - *) Feature: the "ssl_buffer_size" directive. - - *) Feature: the "limit_rate" directive can now be used to rate limit - responses sent in SPDY connections. - - *) Feature: the "spdy_chunk_size" directive. - - *) Feature: the "ssl_session_tickets" directive. - Thanks to Dirkjan Bussink. - - *) Bugfix: the $ssl_session_id variable contained full session - serialized instead of just a session id. - Thanks to Ivan Ristić. - - *) Bugfix: nginx incorrectly handled escaped "?" character in the - "include" SSI command. - - *) Bugfix: the ngx_http_dav_module did not unescape destination URI of - the COPY and MOVE methods. - - *) Bugfix: resolver did not understand domain names with a trailing dot. - Thanks to Yichun Zhang. - - *) Bugfix: alerts "zero size buf in output" might appear in logs while - proxying; the bug had appeared in 1.3.9. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_spdy_module was used. - - *) Bugfix: proxied WebSocket connections might hang right after - handshake if the select, poll, or /dev/poll methods were used. - - *) Bugfix: the "xclient" directive of the mail proxy module incorrectly - handled IPv6 client addresses. - - -Changes with nginx 1.5.8 17 Dec 2013 - - *) Feature: IPv6 support in resolver. - - *) Feature: the "listen" directive supports the "fastopen" parameter. - Thanks to Mathew Rodley. - - *) Feature: SSL support in the ngx_http_uwsgi_module. - Thanks to Roberto De Ioris. - - *) Feature: vim syntax highlighting scripts were added to contrib. - Thanks to Evan Miller. - - *) Bugfix: a timeout might occur while reading client request body in an - SSL connection using chunked transfer encoding. - - *) Bugfix: the "master_process" directive did not work correctly in - nginx/Windows. - - *) Bugfix: the "setfib" parameter of the "listen" directive might not - work. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.5.7 19 Nov 2013 - - *) Security: a character following an unescaped space in a request line - was handled incorrectly (CVE-2013-4547); the bug had appeared in - 0.8.41. - Thanks to Ivan Fratric of the Google Security Team. - - *) Change: a logging level of auth_basic errors about no user/password - provided has been lowered from "error" to "info". - - *) Feature: the "proxy_cache_revalidate", "fastcgi_cache_revalidate", - "scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives. - - *) Feature: the "ssl_session_ticket_key" directive. - Thanks to Piotr Sikora. - - *) Bugfix: the directive "add_header Cache-Control ''" added a - "Cache-Control" response header line with an empty value. - - *) Bugfix: the "satisfy any" directive might return 403 error instead of - 401 if auth_request and auth_basic directives were used. - Thanks to Jan Marc Hoffmann. - - *) Bugfix: the "accept_filter" and "deferred" parameters of the "listen" - directive were ignored for listen sockets created during binary - upgrade. - Thanks to Piotr Sikora. - - *) Bugfix: some data received from a backend with unbufferred proxy - might not be sent to a client immediately if "gzip" or "gunzip" - directives were used. - Thanks to Yichun Zhang. - - *) Bugfix: in error handling in ngx_http_gunzip_filter_module. - - *) Bugfix: responses might hang if the ngx_http_spdy_module was used - with the "auth_request" directive. - - *) Bugfix: memory leak in nginx/Windows. - - -Changes with nginx 1.5.6 01 Oct 2013 - - *) Feature: the "fastcgi_buffering" directive. - - *) Feature: the "proxy_ssl_protocols" and "proxy_ssl_ciphers" - directives. - Thanks to Piotr Sikora. - - *) Feature: optimization of SSL handshakes when using long certificate - chains. - - *) Feature: the mail proxy supports SMTP pipelining. - - *) Bugfix: in the ngx_http_auth_basic_module when using "$apr1$" - password encryption method. - Thanks to Markus Linnala. - - *) Bugfix: in MacOSX, Cygwin, and nginx/Windows incorrect location might - be used to process a request if locations were given using characters - in different cases. - - *) Bugfix: automatic redirect with appended trailing slash for proxied - locations might not work. - - *) Bugfix: in the mail proxy server. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.5.5 17 Sep 2013 - - *) Change: now nginx assumes HTTP/1.0 by default if it is not able to - detect protocol reliably. - - *) Feature: the "disable_symlinks" directive now uses O_PATH on Linux. - - *) Feature: now nginx uses EPOLLRDHUP events to detect premature - connection close by clients if the "epoll" method is used. - - *) Bugfix: in the "valid_referers" directive if the "server_names" - parameter was used. - - *) Bugfix: the $request_time variable did not work in nginx/Windows. - - *) Bugfix: in the "image_filter" directive. - Thanks to Lanshun Zhou. - - *) Bugfix: OpenSSL 1.0.1f compatibility. - Thanks to Piotr Sikora. - - -Changes with nginx 1.5.4 27 Aug 2013 - - *) Change: the "js" extension MIME type has been changed to - "application/javascript"; default value of the "charset_types" - directive was changed accordingly. - - *) Change: now the "image_filter" directive with the "size" parameter - returns responses with the "application/json" MIME type. - - *) Feature: the ngx_http_auth_request_module. - - *) Bugfix: a segmentation fault might occur on start or during - reconfiguration if the "try_files" directive was used with an empty - parameter. - - *) Bugfix: memory leak if relative paths were specified using variables - in the "root" or "auth_basic_user_file" directives. - - *) Bugfix: the "valid_referers" directive incorrectly executed regular - expressions if a "Referer" header started with "https://". - Thanks to Liangbin Li. - - *) Bugfix: responses might hang if subrequests were used and an SSL - handshake error happened during subrequest processing. - Thanks to Aviram Cohen. - - *) Bugfix: in the ngx_http_autoindex_module. - - *) Bugfix: in the ngx_http_spdy_module. - - -Changes with nginx 1.5.3 30 Jul 2013 - - *) Change in internal API: now u->length defaults to -1 if working with - backends in unbuffered mode. - - *) Change: now after receiving an incomplete response from a backend - server nginx tries to send an available part of the response to a - client, and then closes client connection. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_spdy_module was used with the "client_body_in_file_only" - directive. - - *) Bugfix: the "so_keepalive" parameter of the "listen" directive might - be handled incorrectly on DragonFlyBSD. - Thanks to Sepherosa Ziehau. - - *) Bugfix: in the ngx_http_xslt_filter_module. - - *) Bugfix: in the ngx_http_sub_filter_module. - - -Changes with nginx 1.5.2 02 Jul 2013 - - *) Feature: now several "error_log" directives can be used. - - *) Bugfix: the $r->header_in() embedded perl method did not return value - of the "Cookie" and "X-Forwarded-For" request header lines; the bug - had appeared in 1.3.14. - - *) Bugfix: in the ngx_http_spdy_module. - Thanks to Jim Radford. - - *) Bugfix: nginx could not be built on Linux with x32 ABI. - Thanks to Serguei Ivantsov. - - -Changes with nginx 1.5.1 04 Jun 2013 - - *) Feature: the "ssi_last_modified", "sub_filter_last_modified", and - "xslt_last_modified" directives. - Thanks to Alexey Kolpakov. - - *) Feature: the "http_403" parameter of the "proxy_next_upstream", - "fastcgi_next_upstream", "scgi_next_upstream", and - "uwsgi_next_upstream" directives. - - *) Feature: the "allow" and "deny" directives now support unix domain - sockets. - - *) Bugfix: nginx could not be built with the ngx_mail_ssl_module, but - without ngx_http_ssl_module; the bug had appeared in 1.3.14. - - *) Bugfix: in the "proxy_set_body" directive. - Thanks to Lanshun Zhou. - - *) Bugfix: in the "lingering_time" directive. - Thanks to Lanshun Zhou. - - *) Bugfix: the "fail_timeout" parameter of the "server" directive in the - "upstream" context might not work if "max_fails" parameter was used; - the bug had appeared in 1.3.0. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "ssl_stapling" directive was used. - Thanks to Piotr Sikora. - - *) Bugfix: in the mail proxy server. - Thanks to Filipe Da Silva. - - *) Bugfix: nginx/Windows might stop accepting connections if several - worker processes were used. - - -Changes with nginx 1.5.0 07 May 2013 - - *) Security: a stack-based buffer overflow might occur in a worker - process while handling a specially crafted request, potentially - resulting in arbitrary code execution (CVE-2013-2028); the bug had - appeared in 1.3.9. - Thanks to Greg MacManus, iSIGHT Partners Labs. - - -Changes with nginx 1.4.0 24 Apr 2013 - - *) Bugfix: nginx could not be built with the ngx_http_perl_module if the - --with-openssl option was used; the bug had appeared in 1.3.16. - - *) Bugfix: in a request body handling in the ngx_http_perl_module; the - bug had appeared in 1.3.9. - - -Changes with nginx 1.3.16 16 Apr 2013 - - *) Bugfix: a segmentation fault might occur in a worker process if - subrequests were used; the bug had appeared in 1.3.9. - - *) Bugfix: the "tcp_nodelay" directive caused an error if a WebSocket - connection was proxied into a unix domain socket. - - *) Bugfix: the $upstream_response_length variable has an incorrect value - "0" if buffering was not used. - Thanks to Piotr Sikora. - - *) Bugfix: in the eventport and /dev/poll methods. - - -Changes with nginx 1.3.15 26 Mar 2013 - - *) Change: opening and closing a connection without sending any data in - it is no longer logged to access_log with error code 400. - - *) Feature: the ngx_http_spdy_module. - Thanks to Automattic for sponsoring this work. - - *) Feature: the "limit_req_status" and "limit_conn_status" directives. - Thanks to Nick Marden. - - *) Feature: the "image_filter_interlace" directive. - Thanks to Ian Babrou. - - *) Feature: $connections_waiting variable in the - ngx_http_stub_status_module. - - *) Feature: the mail proxy module now supports IPv6 backends. - - *) Bugfix: request body might be transmitted incorrectly when retrying a - request to the next upstream server; the bug had appeared in 1.3.9. - Thanks to Piotr Sikora. - - *) Bugfix: in the "client_body_in_file_only" directive; the bug had - appeared in 1.3.9. - - *) Bugfix: responses might hang if subrequests were used and a DNS error - happened during subrequest processing. - Thanks to Lanshun Zhou. - - *) Bugfix: in backend usage accounting. - - -Changes with nginx 1.3.14 05 Mar 2013 - - *) Feature: $connections_active, $connections_reading, and - $connections_writing variables in the ngx_http_stub_status_module. - - *) Feature: support of WebSocket connections in the - ngx_http_uwsgi_module and ngx_http_scgi_module. - - *) Bugfix: in virtual servers handling with SNI. - - *) Bugfix: new sessions were not always stored if the "ssl_session_cache - shared" directive was used and there was no free space in shared - memory. - Thanks to Piotr Sikora. - - *) Bugfix: multiple X-Forwarded-For headers were handled incorrectly. - Thanks to Neal Poole for sponsoring this work. - - *) Bugfix: in the ngx_http_mp4_module. - Thanks to Gernot Vormayr. - - -Changes with nginx 1.3.13 19 Feb 2013 - - *) Change: a compiler with name "cc" is now used by default. - - *) Feature: support for proxying of WebSocket connections. - Thanks to Apcera and CloudBees for sponsoring this work. - - *) Feature: the "auth_basic_user_file" directive supports "{SHA}" - password encryption method. - Thanks to Louis Opter. - - -Changes with nginx 1.3.12 05 Feb 2013 - - *) Feature: variables support in the "proxy_bind", "fastcgi_bind", - "memcached_bind", "scgi_bind", and "uwsgi_bind" directives. - - *) Feature: the $pipe, $request_length, $time_iso8601, and $time_local - variables can now be used not only in the "log_format" directive. - Thanks to Kiril Kalchev. - - *) Feature: IPv6 support in the ngx_http_geoip_module. - Thanks to Gregor Kališnik. - - *) Bugfix: in the "proxy_method" directive. - - *) Bugfix: a segmentation fault might occur in a worker process if - resolver was used with the poll method. - - *) Bugfix: nginx might hog CPU during SSL handshake with a backend if - the select, poll, or /dev/poll methods were used. - - *) Bugfix: the "[crit] SSL_write() failed (SSL:)" error. - - *) Bugfix: in the "client_body_in_file_only" directive; the bug had - appeared in 1.3.9. - - *) Bugfix: in the "fastcgi_keep_conn" directive. - - -Changes with nginx 1.3.11 10 Jan 2013 - - *) Bugfix: a segmentation fault might occur if logging was used; the bug - had appeared in 1.3.10. - - *) Bugfix: the "proxy_pass" directive did not work with IP addresses - without port specified; the bug had appeared in 1.3.10. - - *) Bugfix: a segmentation fault occurred on start or during - reconfiguration if the "keepalive" directive was specified more than - once in a single upstream block. - - *) Bugfix: parameter "default" of the "geo" directive did not set - default value for IPv6 addresses. - - -Changes with nginx 1.3.10 25 Dec 2012 - - *) Change: domain names specified in configuration file are now resolved - to IPv6 addresses as well as IPv4 ones. - - *) Change: now if the "include" directive with mask is used on Unix - systems, included files are sorted in alphabetical order. - - *) Change: the "add_header" directive adds headers to 201 responses. - - *) Feature: the "geo" directive now supports IPv6 addresses in CIDR - notation. - - *) Feature: the "flush" and "gzip" parameters of the "access_log" - directive. - - *) Feature: variables support in the "auth_basic" directive. - - *) Bugfix: nginx could not be built with the ngx_http_perl_module in - some cases. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_xslt_module was used. - - *) Bugfix: nginx could not be built on MacOSX in some cases. - Thanks to Piotr Sikora. - - *) Bugfix: the "limit_rate" directive with high rates might result in - truncated responses on 32-bit platforms. - Thanks to Alexey Antropov. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "if" directive was used. - Thanks to Piotr Sikora. - - *) Bugfix: a "100 Continue" response was issued with "413 Request Entity - Too Large" responses. - - *) Bugfix: the "image_filter", "image_filter_jpeg_quality" and - "image_filter_sharpen" directives might be inherited incorrectly. - Thanks to Ian Babrou. - - *) Bugfix: "crypt_r() failed" errors might appear if the "auth_basic" - directive was used on Linux. - - *) Bugfix: in backup servers handling. - Thanks to Thomas Chen. - - *) Bugfix: proxied HEAD requests might return incorrect response if the - "gzip" directive was used. - - -Changes with nginx 1.3.9 27 Nov 2012 - - *) Feature: support for chunked transfer encoding while reading client - request body. - - *) Feature: the $request_time and $msec variables can now be used not - only in the "log_format" directive. - - *) Bugfix: cache manager and cache loader processes might not be able to - start if more than 512 listen sockets were used. - - *) Bugfix: in the ngx_http_dav_module. - - -Changes with nginx 1.3.8 30 Oct 2012 - - *) Feature: the "optional_no_ca" parameter of the "ssl_verify_client" - directive. - Thanks to Mike Kazantsev and Eric O'Connor. - - *) Feature: the $bytes_sent, $connection, and $connection_requests - variables can now be used not only in the "log_format" directive. - Thanks to Benjamin Grössing. - - *) Feature: the "auto" parameter of the "worker_processes" directive. - - *) Bugfix: "cache file ... has md5 collision" alert. - - *) Bugfix: in the ngx_http_gunzip_filter_module. - - *) Bugfix: in the "ssl_stapling" directive. - - -Changes with nginx 1.3.7 02 Oct 2012 - - *) Feature: OCSP stapling support. - Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work. - - *) Feature: the "ssl_trusted_certificate" directive. - - *) Feature: resolver now randomly rotates addresses returned from cache. - Thanks to Anton Jouline. - - *) Bugfix: OpenSSL 0.9.7 compatibility. - - -Changes with nginx 1.3.6 12 Sep 2012 - - *) Feature: the ngx_http_gunzip_filter_module. - - *) Feature: the "memcached_gzip_flag" directive. - - *) Feature: the "always" parameter of the "gzip_static" directive. - - *) Bugfix: in the "limit_req" directive; the bug had appeared in 1.1.14. - Thanks to Charles Chen. - - *) Bugfix: nginx could not be built by gcc 4.7 with -O2 optimization if - the --with-ipv6 option was used. - - -Changes with nginx 1.3.5 21 Aug 2012 - - *) Change: the ngx_http_mp4_module module no longer skips tracks in - formats other than H.264 and AAC. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "map" directive was used with variables as values. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "geo" directive was used with the "ranges" parameter but without the - "default" parameter; the bug had appeared in 0.8.43. - Thanks to Zhen Chen and Weibin Yao. - - *) Bugfix: in the -p command-line parameter handling. - - *) Bugfix: in the mail proxy server. - - *) Bugfix: of minor potential bugs. - Thanks to Coverity. - - *) Bugfix: nginx/Windows could not be built with Visual Studio 2005 - Express. - Thanks to HAYASHI Kentaro. - - -Changes with nginx 1.3.4 31 Jul 2012 - - *) Change: the "ipv6only" parameter is now turned on by default for - listening IPv6 sockets. - - *) Feature: the Clang compiler support. - - *) Bugfix: extra listening sockets might be created. - Thanks to Roman Odaisky. - - *) Bugfix: nginx/Windows might hog CPU if a worker process failed to - start. - Thanks to Ricardo Villalobos Guevara. - - *) Bugfix: the "proxy_pass_header", "fastcgi_pass_header", - "scgi_pass_header", "uwsgi_pass_header", "proxy_hide_header", - "fastcgi_hide_header", "scgi_hide_header", and "uwsgi_hide_header" - directives might be inherited incorrectly. - - -Changes with nginx 1.3.3 10 Jul 2012 - - *) Feature: entity tags support and the "etag" directive. - - *) Bugfix: trailing dot in a source value was not ignored if the "map" - directive was used with the "hostnames" parameter. - - *) Bugfix: incorrect location might be used to process a request if a - URI was changed via a "rewrite" directive before an internal redirect - to a named location. - - -Changes with nginx 1.3.2 26 Jun 2012 - - *) Change: the "single" parameter of the "keepalive" directive is now - ignored. - - *) Change: SSL compression is now disabled when using all versions of - OpenSSL, including ones prior to 1.0.0. - - *) Feature: it is now possible to use the "ip_hash" directive to balance - IPv6 clients. - - *) Feature: the $status variable can now be used not only in the - "log_format" directive. - - *) Bugfix: a segmentation fault might occur in a worker process on - shutdown if the "resolver" directive was used. - - *) Bugfix: a segmentation fault might occur in a worker process if the - ngx_http_mp4_module was used. - - *) Bugfix: in the ngx_http_mp4_module. - - *) Bugfix: a segmentation fault might occur in a worker process if - conflicting wildcard server names were used. - - *) Bugfix: nginx might be terminated abnormally on a SIGBUS signal on - ARM platform. - - *) Bugfix: an alert "sendmsg() failed (9: Bad file number)" on HP-UX - while reconfiguration. - - -Changes with nginx 1.3.1 05 Jun 2012 - - *) Security: now nginx/Windows ignores trailing dot in URI path - component, and does not allow URIs with ":$" in it. - Thanks to Vladimir Kochetkov, Positive Research Center. - - *) Feature: the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass" - directives, and the "server" directive inside the "upstream" block, - now support IPv6 addresses. - - *) Feature: the "resolver" directive now supports IPv6 addresses and an - optional port specification. - - *) Feature: the "least_conn" directive inside the "upstream" block. - - *) Feature: it is now possible to specify a weight for servers while - using the "ip_hash" directive. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "image_filter" directive was used; the bug had appeared in 1.3.0. - - *) Bugfix: nginx could not be built with ngx_cpp_test_module; the bug - had appeared in 1.1.12. - - *) Bugfix: access to variables from SSI and embedded perl module might - not work after reconfiguration. - Thanks to Yichun Zhang. - - *) Bugfix: in the ngx_http_xslt_filter_module. - Thanks to Kuramoto Eiji. - - *) Bugfix: memory leak if $geoip_org variable was used. - Thanks to Denis F. Latypoff. - - *) Bugfix: in the "proxy_cookie_domain" and "proxy_cookie_path" - directives. - - -Changes with nginx 1.3.0 15 May 2012 - - *) Feature: the "debug_connection" directive now supports IPv6 addresses - and the "unix:" parameter. - - *) Feature: the "set_real_ip_from" directive and the "proxy" parameter - of the "geo" directive now support IPv6 addresses. - - *) Feature: the "real_ip_recursive", "geoip_proxy", and - "geoip_proxy_recursive" directives. - - *) Feature: the "proxy_recursive" parameter of the "geo" directive. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "resolver" directive was used. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives were used and - backend returned incorrect response. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "rewrite" directive was used and new request arguments in a - replacement used variables. - - *) Bugfix: nginx might hog CPU if the open file resource limit was - reached. - - *) Bugfix: nginx might loop infinitely over backends if the - "proxy_next_upstream" directive with the "http_404" parameter was - used and there were backup servers specified in an upstream block. - - *) Bugfix: adding the "down" parameter of the "server" directive might - cause unneeded client redistribution among backend servers if the - "ip_hash" directive was used. - - *) Bugfix: socket leak. - Thanks to Yichun Zhang. - - *) Bugfix: in the ngx_http_fastcgi_module. - - -Changes with nginx 1.2.0 23 Apr 2012 - - *) Bugfix: a segmentation fault might occur in a worker process if the - "try_files" directive was used; the bug had appeared in 1.1.19. - - *) Bugfix: response might be truncated if there were more than IOV_MAX - buffers used. - - *) Bugfix: in the "crop" parameter of the "image_filter" directive. - Thanks to Maxim Bublis. - - -Changes with nginx 1.1.19 12 Apr 2012 - - *) Security: specially crafted mp4 file might allow to overwrite memory - locations in a worker process if the ngx_http_mp4_module was used, - potentially resulting in arbitrary code execution (CVE-2012-2089). - Thanks to Matthew Daley. - - *) Bugfix: nginx/Windows might be terminated abnormally. - Thanks to Vincent Lee. - - *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as - "backup". - - *) Bugfix: the "allow" and "deny" directives might be inherited - incorrectly if they were used with IPv6 addresses. - - *) Bugfix: the "modern_browser" and "ancient_browser" directives might - be inherited incorrectly. - - *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC. - - *) Bugfix: in the ngx_http_mp4_module. - - -Changes with nginx 1.1.18 28 Mar 2012 - - *) Change: keepalive connections are no longer disabled for Safari by - default. - - *) Feature: the $connection_requests variable. - - *) Feature: $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and - $tcpinfo_rcv_space variables. - - *) Feature: the "worker_cpu_affinity" directive now works on FreeBSD. - - *) Feature: the "xslt_param" and "xslt_string_param" directives. - Thanks to Samuel Behan. - - *) Bugfix: in configure tests. - Thanks to Piotr Sikora. - - *) Bugfix: in the ngx_http_xslt_filter_module. - - *) Bugfix: nginx could not be built on Debian GNU/Hurd. - - -Changes with nginx 1.1.17 15 Mar 2012 - - *) Security: content of previously freed memory might be sent to a - client if backend returned specially crafted response. - Thanks to Matthew Daley. - - *) Bugfix: in the embedded perl module if used from SSI. - Thanks to Matthew Daley. - - *) Bugfix: in the ngx_http_uwsgi_module. - - -Changes with nginx 1.1.16 29 Feb 2012 - - *) Change: the simultaneous subrequest limit has been raised to 200. - - *) Feature: the "from" parameter of the "disable_symlinks" directive. - - *) Feature: the "return" and "error_page" directives can now be used to - return 307 redirections. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "resolver" directive was used and there was no "error_log" directive - specified at global level. - Thanks to Roman Arutyunyan. - - *) Bugfix: a segmentation fault might occur in a worker process if the - "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were - used. - - *) Bugfix: memory leaks. - Thanks to Lanshun Zhou. - - *) Bugfix: in the "disable_symlinks" directive. - - *) Bugfix: on ZFS filesystem disk cache size might be calculated - incorrectly; the bug had appeared in 1.0.1. - - *) Bugfix: nginx could not be built by the icc 12.1 compiler. - - *) Bugfix: nginx could not be built by gcc on Solaris; the bug had - appeared in 1.1.15. - - -Changes with nginx 1.1.15 15 Feb 2012 - - *) Feature: the "disable_symlinks" directive. - - *) Feature: the "proxy_cookie_domain" and "proxy_cookie_path" - directives. - - *) Bugfix: nginx might log incorrect error "upstream prematurely closed - connection" instead of correct "upstream sent too big header" one. - Thanks to Feibo Li. - - *) Bugfix: nginx could not be built with the ngx_http_perl_module if the - --with-openssl option was used. - - *) Bugfix: the number of internal redirects to named locations was not - limited. - - *) Bugfix: calling $r->flush() multiple times might cause errors in the - ngx_http_gzip_filter_module. - - *) Bugfix: temporary files might be not removed if the "proxy_store" - directive was used with SSI includes. - - *) Bugfix: in some cases non-cacheable variables (such as the $args - variable) returned old empty cached value. - - *) Bugfix: a segmentation fault might occur in a worker process if too - many SSI subrequests were issued simultaneously; the bug had appeared - in 0.7.25. - - -Changes with nginx 1.1.14 30 Jan 2012 - - *) Feature: multiple "limit_req" limits may be used simultaneously. - - *) Bugfix: in error handling while connecting to a backend. - Thanks to Piotr Sikora. - - *) Bugfix: in AIO error handling on FreeBSD. - - *) Bugfix: in the OpenSSL library initialization. - - *) Bugfix: the "proxy_redirect" directives might be inherited - incorrectly. - - *) Bugfix: memory leak during reconfiguration if the "pcre_jit" - directive was used. - - -Changes with nginx 1.1.13 16 Jan 2012 - - *) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the - "ssl_protocols" directive. - - *) Bugfix: the "limit_req" directive parameters were not inherited - correctly; the bug had appeared in 1.1.12. - - *) Bugfix: the "proxy_redirect" directive incorrectly processed - "Refresh" header if regular expression were used. - - *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter - did not return answer from cache if there were no live upstreams. - - *) Bugfix: the "worker_cpu_affinity" directive might not work. - - *) Bugfix: nginx could not be built on Solaris; the bug had appeared in - 1.1.12. - - *) Bugfix: in the ngx_http_mp4_module. - - -Changes with nginx 1.1.12 26 Dec 2011 - - *) Change: a "proxy_pass" directive without URI part now uses changed - URI after redirection with the "error_page" directive. - Thanks to Lanshun Zhou. - - *) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock", - "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives. - - *) Feature: the "pcre_jit" directive. - - *) Feature: the "if" SSI command supports captures in regular - expressions. - - *) Bugfix: the "if" SSI command did not work inside the "block" command. - - *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level" - directives might not work. - - *) Bugfix: the "limit_rate" directive did not allow to use full - throughput, even if limit value was very high. - - *) Bugfix: the "sendfile_max_chunk" directive did not work, if the - "limit_rate" directive was used. - - *) Bugfix: a "proxy_pass" directive without URI part always used - original request URI if variables were used. - - *) Bugfix: a "proxy_pass" directive without URI part might use original - request after redirection with the "try_files" directive. - Thanks to Lanshun Zhou. - - *) Bugfix: in the ngx_http_scgi_module. - - *) Bugfix: in the ngx_http_mp4_module. - - *) Bugfix: nginx could not be built on Solaris; the bug had appeared in - 1.1.9. - - -Changes with nginx 1.1.11 12 Dec 2011 - - *) Feature: the "so_keepalive" parameter of the "listen" directive. - Thanks to Vsevolod Stakhov. - - *) Feature: the "if_not_empty" parameter of the - "fastcgi/scgi/uwsgi_param" directives. - - *) Feature: the $https variable. - - *) Feature: the "proxy_redirect" directive supports variables in the - first parameter. - - *) Feature: the "proxy_redirect" directive supports regular expressions. - - *) Bugfix: the $sent_http_cache_control variable might contain a wrong - value if the "expires" directive was used. - Thanks to Yichun Zhang. - - *) Bugfix: the "read_ahead" directive might not work combined with - "try_files" and "open_file_cache". - - *) Bugfix: a segmentation fault might occur in a worker process if small - time was used in the "inactive" parameter of the "proxy_cache_path" - directive. - - *) Bugfix: responses from cache might hang. - - -Changes with nginx 1.1.10 30 Nov 2011 - - *) Bugfix: a segmentation fault occurred in a worker process if AIO was - used on Linux; the bug had appeared in 1.1.9. - - -Changes with nginx 1.1.9 28 Nov 2011 - - *) Change: now double quotes are encoded in an "echo" SSI-command - output. - Thanks to Zaur Abasmirzoev. - - *) Feature: the "valid" parameter of the "resolver" directive. By - default TTL returned by a DNS server is used. - Thanks to Kirill A. Korinskiy. - - *) Bugfix: nginx might hang after a worker process abnormal termination. - - *) Bugfix: a segmentation fault might occur in a worker process if SNI - was used; the bug had appeared in 1.1.2. - - *) Bugfix: in the "keepalive_disable" directive; the bug had appeared in - 1.1.8. - Thanks to Alexander Usov. - - *) Bugfix: SIGWINCH signal did not work after first binary upgrade; the - bug had appeared in 1.1.1. - - *) Bugfix: backend responses with length not matching "Content-Length" - header line are no longer cached. - - *) Bugfix: in the "scgi_param" directive, if complex parameters were - used. - - *) Bugfix: in the "epoll" event method. - Thanks to Yichun Zhang. - - *) Bugfix: in the ngx_http_flv_module. - Thanks to Piotr Sikora. - - *) Bugfix: in the ngx_http_mp4_module. - - *) Bugfix: IPv6 addresses are now handled properly in a request line and - in a "Host" request header line. - - *) Bugfix: "add_header" and "expires" directives did not work if a - request was proxied and response status code was 206. - - *) Bugfix: nginx could not be built on FreeBSD 10. - - *) Bugfix: nginx could not be built on AIX. - - -Changes with nginx 1.1.8 14 Nov 2011 - - *) Change: the ngx_http_limit_zone_module was renamed to the - ngx_http_limit_conn_module. - - *) Change: the "limit_zone" directive was superseded by the - "limit_conn_zone" directive with a new syntax. - - *) Feature: support for multiple "limit_conn" limits on the same level. - - *) Feature: the "image_filter_sharpen" directive. - - *) Bugfix: a segmentation fault might occur in a worker process if - resolver got a big DNS response. - Thanks to Ben Hawkes. - - *) Bugfix: in cache key calculation if internal MD5 implementation was - used; the bug had appeared in 1.0.4. - - *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request - header lines might be passed to backend while caching; or not passed - without caching if caching was enabled in another part of the - configuration. - - *) Bugfix: the module ngx_http_mp4_module sent incorrect - "Content-Length" response header line if the "start" argument was - used. - Thanks to Piotr Sikora. - - -Changes with nginx 1.1.7 31 Oct 2011 - - *) Feature: support of several DNS servers in the "resolver" directive. - Thanks to Kirill A. Korinskiy. - - *) Bugfix: a segmentation fault occurred on start or during - reconfiguration if the "ssl" directive was used at http level and - there was no "ssl_certificate" defined. - - *) Bugfix: reduced memory consumption while proxying big files if they - were buffered to disk. - - *) Bugfix: a segmentation fault might occur in a worker process if - "proxy_http_version 1.1" directive was used. - - *) Bugfix: in the "expires @time" directive. - - -Changes with nginx 1.1.6 17 Oct 2011 - - *) Change in internal API: now module context data are cleared while - internal redirect to named location. - Requested by Yichun Zhang. - - *) Change: if a server in an upstream failed, only one request will be - sent to it after fail_timeout; the server will be considered alive if - it will successfully respond to the request. - - *) Change: now the 0x7F-0xFF characters are escaped as \xXX in an - access_log. - - *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support - the following additional values: X-Accel-Limit-Rate, - X-Accel-Buffering, X-Accel-Charset. - - *) Feature: decrease of memory consumption if SSL is used. - - *) Bugfix: some UTF-8 characters were processed incorrectly. - Thanks to Alexey Kuts. - - *) Bugfix: the ngx_http_rewrite_module directives specified at "server" - level were executed twice if no matching locations were defined. - - *) Bugfix: a socket leak might occurred if "aio sendfile" was used. - - *) Bugfix: connections with fast clients might be closed after - send_timeout if file AIO was used. - - *) Bugfix: in the ngx_http_autoindex_module. - - *) Bugfix: the module ngx_http_mp4_module did not support seeking on - 32-bit platforms. - - -Changes with nginx 1.1.5 05 Oct 2011 - - *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives. - Thanks to Peter Smit. - - *) Bugfix: non-cacheable responses might be cached if - "proxy_cache_bypass" directive was used. - Thanks to John Ferlito. - - *) Bugfix: in HTTP/1.1 support in the ngx_http_proxy_module. - - *) Bugfix: cached responses with an empty body were returned - incorrectly; the bug had appeared in 0.8.31. - - *) Bugfix: 201 responses of the ngx_http_dav_module were incorrect; the - bug had appeared in 0.8.32. - - *) Bugfix: in the "return" directive. - - *) Bugfix: the "ssl_session_cache builtin" directive caused segmentation - fault; the bug had appeared in 1.1.1. - - -Changes with nginx 1.1.4 20 Sep 2011 - - *) Feature: the ngx_http_upstream_keepalive module. - - *) Feature: the "proxy_http_version" directive. - - *) Feature: the "fastcgi_keep_conn" directive. - - *) Feature: the "worker_aio_requests" directive. - - *) Bugfix: if nginx was built --with-file-aio it could not be run on - Linux kernel which did not support AIO. - - *) Bugfix: in Linux AIO error processing. - Thanks to Hagai Avrahami. - - *) Bugfix: reduced memory consumption for long-lived requests. - - *) Bugfix: the module ngx_http_mp4_module did not support 64-bit MP4 - "co64" atom. - - -Changes with nginx 1.1.3 14 Sep 2011 - - *) Feature: the module ngx_http_mp4_module. - - *) Bugfix: in Linux AIO combined with open_file_cache. - - *) Bugfix: open_file_cache did not update file info on retest if file - was not atomically changed. - - *) Bugfix: nginx could not be built on MacOSX 10.7. - - -Changes with nginx 1.1.2 05 Sep 2011 - - *) Change: now if total size of all ranges is greater than source - response size, then nginx disables ranges and returns just the source - response. - - *) Feature: the "max_ranges" directive. - - *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and - "ssl_prefer_server_ciphers" directives might work incorrectly if SNI - was used. - - *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort" - directives. - - -Changes with nginx 1.1.1 22 Aug 2011 - - *) Change: now cache loader processes either as many files as specified - by "loader_files" parameter or works no longer than time specified by - the "loader_threshold" parameter during each iteration. - - *) Change: now SIGWINCH signal works only in daemon mode. - - *) Feature: now shared zones and caches use POSIX semaphores on Solaris. - Thanks to Den Ivanov. - - *) Feature: accept filters are now supported on NetBSD. - - *) Bugfix: nginx could not be built on Linux 3.0. - - *) Bugfix: nginx did not use gzipping in some cases; the bug had - appeared in 1.1.0. - - *) Bugfix: request body might be processed incorrectly if client used - pipelining. - - *) Bugfix: in the "request_body_in_single_buf" directive. - - *) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives - if SSL connection to backend was used. - - *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as - "down". - - *) Bugfix: a segmentation fault might occur during reconfiguration if - ssl_session_cache was defined but not used in previous configuration. - - *) Bugfix: a segmentation fault might occur in a worker process if many - backup servers were used in an upstream. - - *) Bugfix: a segmentation fault might occur in a worker process if - "fastcgi/scgi/uwsgi_param" directives were used with values starting - with "HTTP_"; the bug had appeared in 0.8.40. - - -Changes with nginx 1.1.0 01 Aug 2011 - - *) Feature: cache loader run time decrease. - - *) Feature: "loader_files", "loader_sleep", and "loader_threshold" - options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives. - - *) Feature: loading time decrease of configuration with large number of - HTTPS sites. - - *) Feature: now nginx supports ECDHE key exchange ciphers. - Thanks to Adrian Kotelba. - - *) Feature: the "lingering_close" directive. - Thanks to Maxim Dounin. - - *) Bugfix: in closing connection for pipelined requests. - Thanks to Maxim Dounin. - - *) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in - "Accept-Encoding" request header line. - - *) Bugfix: in timeout in unbuffered proxied mode. - Thanks to Maxim Dounin. - - *) Bugfix: memory leaks when a "proxy_pass" directive contains variables - and proxies to an HTTPS backend. - Thanks to Maxim Dounin. - - *) Bugfix: in parameter validation of a "proxy_pass" directive with - variables. - Thanks to Lanshun Zhou. - - *) Bugfix: SSL did not work on QNX. - Thanks to Maxim Dounin. - - *) Bugfix: SSL modules could not be built by gcc 4.6 without - --with-debug option. - - -Changes with nginx 1.0.5 19 Jul 2011 - - *) Change: now default SSL ciphers are "HIGH:!aNULL:!MD5". - Thanks to Rob Stradling. - - *) Feature: the "referer_hash_max_size" and "referer_hash_bucket_size" - directives. - Thanks to Witold Filipczyk. - - *) Feature: $uid_reset variable. - - *) Bugfix: a segmentation fault might occur in a worker process, if a - caching was used. - Thanks to Lanshun Zhou. - - *) Bugfix: worker processes may got caught in an endless loop during - reconfiguration, if a caching was used; the bug had appeared in - 0.8.48. - Thanks to Maxim Dounin. - - *) Bugfix: "stalled cache updating" alert. - Thanks to Maxim Dounin. - - -Changes with nginx 1.0.4 01 Jun 2011 - - *) Change: now regular expressions case sensitivity in the "map" - directive is given by prefixes "~" or "~*". - - *) Feature: now shared zones and caches use POSIX semaphores on Linux. - Thanks to Denis F. Latypoff. - - *) Bugfix: "stalled cache updating" alert. - - *) Bugfix: nginx could not be built --without-http_auth_basic_module; - the bug had appeared in 1.0.3. - - -Changes with nginx 1.0.3 25 May 2011 - - *) Feature: the "auth_basic_user_file" directive supports "$apr1", - "{PLAIN}", and "{SSHA}" password encryption methods. - Thanks to Maxim Dounin. - - *) Feature: the "geoip_org" directive and $geoip_org variable. - Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff. - - *) Feature: ngx_http_geo_module and ngx_http_geoip_module support IPv4 - addresses mapped to IPv6 addresses. - - *) Bugfix: a segmentation fault occurred in a worker process during - testing IPv4 address mapped to IPv6 address, if access or deny rules - were defined only for IPv6; the bug had appeared in 0.8.22. - - *) Bugfix: a cached response may be broken if "proxy/fastcgi/scgi/ - uwsgi_cache_bypass" and "proxy/fastcgi/scgi/uwsgi_no_cache" directive - values were different; the bug had appeared in 0.8.46. - - -Changes with nginx 1.0.2 10 May 2011 - - *) Feature: now shared zones and caches use POSIX semaphores. - - *) Bugfix: in the "rotate" parameter of the "image_filter" directive. - Thanks to Adam Bocim. - - *) Bugfix: nginx could not be built on Solaris; the bug had appeared in - 1.0.1. - - -Changes with nginx 1.0.1 03 May 2011 - - *) Change: now the "split_clients" directive uses MurmurHash2 algorithm - because of better distribution. - Thanks to Oleg Mamontov. - - *) Change: now long strings starting with zero are not considered as - false values. - Thanks to Maxim Dounin. - - *) Change: now nginx uses a default listen backlog value 511 on Linux. - - *) Feature: the $upstream_... variables may be used in the SSI and perl - modules. - - *) Bugfix: now nginx limits better disk cache size. - Thanks to Oleg Mamontov. - - *) Bugfix: a segmentation fault might occur while parsing incorrect IPv4 - address; the bug had appeared in 0.9.3. - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not be built by gcc 4.6 without --with-debug - option. - - *) Bugfix: nginx could not be built on Solaris 9 and earlier; the bug - had appeared in 0.9.3. - Thanks to Dagobert Michelsen. - - *) Bugfix: $request_time variable had invalid values if subrequests were - used; the bug had appeared in 0.8.47. - Thanks to Igor A. Valcov. - - -Changes with nginx 1.0.0 12 Apr 2011 - - *) Bugfix: a cache manager might hog CPU after reload. - Thanks to Maxim Dounin. - - *) Bugfix: an "image_filter crop" directive worked incorrectly coupled - with an "image_filter rotate 180" directive. - - *) Bugfix: a "satisfy any" directive disabled custom 401 error page. - - -Changes with nginx 0.9.7 04 Apr 2011 - - *) Feature: now keepalive connections may be closed premature, if there - are no free worker connections. - Thanks to Maxim Dounin. - - *) Feature: the "rotate" parameter of the "image_filter" directive. - Thanks to Adam Bocim. - - *) Bugfix: a case when a backend in "fastcgi_pass", "scgi_pass", or - "uwsgi_pass" directives is given by expression and refers to a - defined upstream. - - -Changes with nginx 0.9.6 21 Mar 2011 - - *) Feature: the "map" directive supports regular expressions as value of - the first parameter. - - *) Feature: $time_iso8601 access_log variable. - Thanks to Michael Lustfield. - - -Changes with nginx 0.9.5 21 Feb 2011 - - *) Change: now nginx uses a default listen backlog value -1 on Linux. - Thanks to Andrei Nigmatulin. - - *) Feature: the "utf8" parameter of "geoip_country" and "geoip_city" - directives. - Thanks to Denis F. Latypoff. - - *) Bugfix: in a default "proxy_redirect" directive if "proxy_pass" - directive has no URI part. - Thanks to Maxim Dounin. - - *) Bugfix: an "error_page" directive did not work with nonstandard error - codes; the bug had appeared in 0.8.53. - Thanks to Maxim Dounin. - - -Changes with nginx 0.9.4 21 Jan 2011 - - *) Feature: the "server_name" directive supports the $hostname variable. - - *) Feature: 494 code for "Request Header Too Large" error. - - -Changes with nginx 0.9.3 13 Dec 2010 - - *) Bugfix: if there was a single server for given IPv6 address:port - pair, then captures in regular expressions in a "server_name" - directive did not work. - - *) Bugfix: nginx could not be built on Solaris; the bug had appeared in - 0.9.0. - - -Changes with nginx 0.9.2 06 Dec 2010 - - *) Feature: the "If-Unmodified-Since" client request header line - support. - - *) Workaround: fallback to accept() syscall if accept4() was not - implemented; the issue had appeared in 0.9.0. - - *) Bugfix: nginx could not be built on Cygwin; the bug had appeared in - 0.9.0. - - *) Bugfix: for OpenSSL vulnerability CVE-2010-4180. - Thanks to Maxim Dounin. - - -Changes with nginx 0.9.1 30 Nov 2010 - - *) Bugfix: "return CODE message" directives did not work; the bug had - appeared in 0.9.0. - - -Changes with nginx 0.9.0 29 Nov 2010 - - *) Feature: the "keepalive_disable" directive. - - *) Feature: the "map" directive supports variables as value of a defined - variable. - - *) Feature: the "map" directive supports empty strings as value of the - first parameter. - - *) Feature: the "map" directive supports expressions as the first - parameter. - - *) Feature: nginx(8) manual page. - Thanks to Sergey Osokin. - - *) Feature: Linux accept4() support. - Thanks to Simon Liu. - - *) Workaround: elimination of Linux linker warning about "sys_errlist" - and "sys_nerr"; the warning had appeared in 0.8.35. - - *) Bugfix: a segmentation fault might occur in a worker process, if the - "auth_basic" directive was used. - Thanks to Michail Laletin. - - *) Bugfix: compatibility with ngx_http_eval_module; the bug had appeared - in 0.8.42. - - -Changes with nginx 0.8.53 18 Oct 2010 - - *) Feature: now the "error_page" directive allows to change a status - code in a redirect. - - *) Feature: the "gzip_disable" directive supports special "degradation" - mask. - - *) Bugfix: a socket leak might occurred if file AIO was used. - Thanks to Maxim Dounin. - - *) Bugfix: if the first server had no "listen" directive and there was - no explicit default server, then a next server with a "listen" - directive became the default server; the bug had appeared in 0.8.21. - - -Changes with nginx 0.8.52 28 Sep 2010 - - *) Bugfix: nginx used SSL mode for a listen socket if any listen option - was set; the bug had appeared in 0.8.51. - - -Changes with nginx 0.8.51 27 Sep 2010 - - *) Change: the "secure_link_expires" directive has been canceled. - - *) Change: a logging level of resolver errors has been lowered from - "alert" to "error". - - *) Feature: now a listen socket "ssl" parameter may be set several - times. - - -Changes with nginx 0.8.50 02 Sep 2010 - - *) Feature: the "secure_link", "secure_link_md5", and - "secure_link_expires" directives of the ngx_http_secure_link_module. - - *) Feature: the -q switch. - Thanks to Gena Makhomed. - - *) Bugfix: worker processes may got caught in an endless loop during - reconfiguration, if a caching was used; the bug had appeared in - 0.8.48. - - *) Bugfix: in the "gzip_disable" directive. - Thanks to Derrick Petzold. - - *) Bugfix: nginx/Windows could not send stop, quit, reopen, and reload - signals to a process run in other session. - - -Changes with nginx 0.8.49 09 Aug 2010 - - *) Feature: the "image_filter_jpeg_quality" directive supports - variables. - - *) Bugfix: a segmentation fault might occur in a worker process, if the - $geoip_region_name variables was used; the bug had appeared in - 0.8.48. - - *) Bugfix: errors intercepted by error_page were cached only for next - request; the bug had appeared in 0.8.48. - - -Changes with nginx 0.8.48 03 Aug 2010 - - *) Change: now the "server_name" directive default value is an empty - name "". - Thanks to Gena Makhomed. - - *) Change: now the "server_name_in_redirect" directive default value is - "off". - - *) Feature: the $geoip_dma_code, $geoip_area_code, and - $geoip_region_name variables. - Thanks to Christine McGonagle. - - *) Bugfix: the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and - "scgi_pass" directives were not inherited inside "limit_except" - blocks. - - *) Bugfix: the "proxy_cache_min_uses", "fastcgi_cache_min_uses" - "uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not - work; the bug had appeared in 0.8.46. - - *) Bugfix: the "fastcgi_split_path_info" directive used incorrectly - captures, if only parts of an URI were captured. - Thanks to Yuriy Taraday and Frank Enderle. - - *) Bugfix: the "rewrite" directive did not escape a ";" character during - copying from URI to query string. - Thanks to Daisuke Murase. - - *) Bugfix: the ngx_http_image_filter_module closed a connection, if an - image was larger than "image_filter_buffer" size. - - -Changes with nginx 0.8.47 28 Jul 2010 - - *) Bugfix: $request_time variable had invalid values for subrequests. - - *) Bugfix: errors intercepted by error_page could not be cached. - - *) Bugfix: a cache manager process may got caught in an endless loop, if - max_size parameter was used; the bug had appeared in 0.8.46. - - -Changes with nginx 0.8.46 19 Jul 2010 - - *) Change: now the "proxy_no_cache", "fastcgi_no_cache", - "uwsgi_no_cache", and "scgi_no_cache" directives affect on a cached - response saving only. - - *) Feature: the "proxy_cache_bypass", "fastcgi_cache_bypass", - "uwsgi_cache_bypass", and "scgi_cache_bypass" directives. - - *) Bugfix: nginx did not free memory in cache keys zones if there was an - error during working with backend: the memory was freed only after - inactivity time or on memory low condition. - - -Changes with nginx 0.8.45 13 Jul 2010 - - *) Feature: ngx_http_xslt_filter improvements. - Thanks to Laurence Rowe. - - *) Bugfix: SSI response might be truncated after include with - wait="yes"; the bug had appeared in 0.7.25. - Thanks to Maxim Dounin. - - *) Bugfix: the "listen" directive did not support the "setfib=0" - parameter. - - -Changes with nginx 0.8.44 05 Jul 2010 - - *) Change: now nginx does not cache by default backend responses, if - they have a "Set-Cookie" header line. - - *) Feature: the "listen" directive supports the "setfib" parameter. - Thanks to Andrew Filonov. - - *) Bugfix: the "sub_filter" directive might change character case on - partial match. - - *) Bugfix: compatibility with HP/UX. - - *) Bugfix: compatibility with AIX xlC_r compiler. - - *) Bugfix: nginx treated large SSLv2 packets as plain requests. - Thanks to Miroslaw Jaworski. - - -Changes with nginx 0.8.43 30 Jun 2010 - - *) Feature: large geo ranges base loading speed-up. - - *) Bugfix: an error_page redirection to "location /zero {return 204;}" - without changing status code kept the error body; the bug had - appeared in 0.8.42. - - *) Bugfix: nginx might close IPv6 listen socket during reconfiguration. - Thanks to Maxim Dounin. - - *) Bugfix: the $uid_set variable may be used at any request processing - stage. - - -Changes with nginx 0.8.42 21 Jun 2010 - - *) Change: now nginx tests locations given by regular expressions, if - request was matched exactly by a location given by a prefix string. - The previous behavior has been introduced in 0.7.1. - - *) Feature: the ngx_http_scgi_module. - Thanks to Manlio Perillo. - - *) Feature: a text answer may be added to a "return" directive. - - -Changes with nginx 0.8.41 15 Jun 2010 - - *) Security: nginx/Windows worker might be terminated abnormally if a - requested file name has invalid UTF-8 encoding. - - *) Change: now nginx allows to use spaces in a request line. - - *) Bugfix: the "proxy_redirect" directive changed incorrectly a backend - "Refresh" response header line. - Thanks to Andrey Andreew and Max Sogin. - - *) Bugfix: nginx did not support path without host name in "Destination" - request header line. - - -Changes with nginx 0.8.40 07 Jun 2010 - - *) Security: now nginx/Windows ignores default file stream name. - Thanks to Jose Antonio Vazquez Gonzalez. - - *) Feature: the ngx_http_uwsgi_module. - Thanks to Roberto De Ioris. - - *) Feature: a "fastcgi_param" directive with value starting with "HTTP_" - overrides a client request header line. - - *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request - header lines were passed to FastCGI-server while caching. - - *) Bugfix: listen unix domain socket could not be changed during - reconfiguration. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.39 31 May 2010 - - *) Bugfix: an inherited "alias" directive worked incorrectly in - inclusive location. - - *) Bugfix: in "alias" with variables and "try_files" directives - combination. - - *) Bugfix: listen unix domain and IPv6 sockets did not inherit while - online upgrade. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.38 24 May 2010 - - *) Feature: the "proxy_no_cache" and "fastcgi_no_cache" directives. - - *) Feature: now the "rewrite" directive does a redirect automatically if - the $scheme variable is used. - Thanks to Piotr Sikora. - - *) Bugfix: now "limit_req" delay directive conforms to the described - algorithm. - Thanks to Maxim Dounin. - - *) Bugfix: the $uid_got variable might not be used in the SSI and perl - modules. - - -Changes with nginx 0.8.37 17 May 2010 - - *) Feature: the ngx_http_split_clients_module. - - *) Feature: the "map" directive supports keys more than 255 characters. - - *) Bugfix: nginx ignored the "private" and "no-store" values in the - "Cache-Control" backend response header line. - - *) Bugfix: a "stub" parameter of an "include" SSI directive was not - used, if empty response has 200 status code. - - *) Bugfix: if a proxied or FastCGI request was internally redirected to - another proxied or FastCGI location, then a segmentation fault might - occur in a worker process; the bug had appeared in 0.8.33. - Thanks to Yichun Zhang. - - *) Bugfix: IMAP connections may hang until they timed out while talking - to Zimbra server. - Thanks to Alan Batie. - - -Changes with nginx 0.8.36 22 Apr 2010 - - *) Bugfix: the ngx_http_dav_module handled incorrectly the DELETE, COPY, - and MOVE methods for symlinks. - - *) Bugfix: values of the $query_string, $arg_..., etc. variables cached - in main request were used by the SSI module in subrequests. - - *) Bugfix: a variable value was repeatedly encoded after each an "echo" - SSI-command output; the bug had appeared in 0.6.14. - - *) Bugfix: a worker process hung if a FIFO file was requested. - Thanks to Vicente Aguilar and Maxim Dounin. - - *) Bugfix: OpenSSL-1.0.0 compatibility on 64-bit Linux. - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not be built --without-http-cache; the bug had - appeared in 0.8.35. - - -Changes with nginx 0.8.35 01 Apr 2010 - - *) Change: now the charset filter runs before the SSI filter. - - *) Feature: the "chunked_transfer_encoding" directive. - - *) Bugfix: an "&" character was not escaped when it was copied in - arguments part in a rewrite rule. - - *) Bugfix: nginx might be terminated abnormally while a signal - processing or if the directive "timer_resolution" was used on - platforms which do not support kqueue or eventport notification - methods. - Thanks to George Xie and Maxim Dounin. - - *) Bugfix: if temporary files and permanent storage area resided at - different file systems, then permanent file modification times were - incorrect. - Thanks to Maxim Dounin. - - *) Bugfix: ngx_http_memcached_module might issue the error message - "memcached sent invalid trailer". - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not built zlib-1.2.4 library using the library - sources. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault occurred in a worker process, if there - was large stderr output before FastCGI response; the bug had appeared - in 0.8.34. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.34 03 Mar 2010 - - *) Bugfix: nginx did not support all ciphers and digests used in client - certificates. - Thanks to Innocenty Enikeew. - - *) Bugfix: nginx cached incorrectly FastCGI responses if there was large - stderr output before response. - - *) Bugfix: nginx did not support HTTPS referrers. - - *) Bugfix: nginx/Windows might not find file if path in configuration - was given in other character case; the bug had appeared in 0.8.33. - - *) Bugfix: the $date_local variable has an incorrect value, if the "%s" - format was used. - Thanks to Maxim Dounin. - - *) Bugfix: if ssl_session_cache was not set or was set to "none", then - during client certificate verify the error "session id context - uninitialized" might occur; the bug had appeared in 0.7.1. - - *) Bugfix: a geo range returned default value if the range included two - or more /16 networks and did not begin at /16 network boundary. - - *) Bugfix: a block used in a "stub" parameter of an "include" SSI - directive was output with "text/plain" MIME type. - - *) Bugfix: $r->sleep() did not work; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.33 01 Feb 2010 - - *) Security: now nginx/Windows ignores trailing spaces in URI. - Thanks to Dan Crowley, Core Security Technologies. - - *) Security: now nginx/Windows ignores short files names. - Thanks to Dan Crowley, Core Security Technologies. - - *) Change: now keepalive connections after POST requests are not - disabled for MSIE 7.0+. - Thanks to Adam Lounds. - - *) Workaround: now keepalive connections are disabled for Safari. - Thanks to Joshua Sierles. - - *) Bugfix: if a proxied or FastCGI request was internally redirected to - another proxied or FastCGI location, then $upstream_response_time - variable may have abnormally large value; the bug had appeared in - 0.8.7. - - *) Bugfix: a segmentation fault might occur in a worker process, while - discarding a request body; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.32 11 Jan 2010 - - *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module. - Thanks to Maxim Dounin. - - *) Bugfix: regular expression named captures worked for two names only. - Thanks to Maxim Dounin. - - *) Bugfix: now the "localhost" name is used in the "Host" request header - line, if an unix domain socket is defined in the "auth_http" - directive. - Thanks to Maxim Dounin. - - *) Bugfix: nginx did not support chunked transfer encoding for 201 - responses. - Thanks to Julian Reich. - - *) Bugfix: if the "expires modified" set date in the past, then a - negative number was set in the "Cache-Control" response header line. - Thanks to Alex Kapranoff. - - -Changes with nginx 0.8.31 23 Dec 2009 - - *) Feature: now the "error_page" directive may redirect the 301 and 302 - responses. - - *) Feature: the $geoip_city_continent_code, $geoip_latitude, and - $geoip_longitude variables. - Thanks to Arvind Sundararajan. - - *) Feature: now the ngx_http_image_filter_module deletes always EXIF and - other application specific data if the data consume more than 5% of a - JPEG file. - - *) Bugfix: nginx closed a connection if a cached response had an empty - body. - Thanks to Piotr Sikora. - - *) Bugfix: nginx might not be built by gcc 4.x if the -O2 or higher - optimization option was used. - Thanks to Maxim Dounin and Denis F. Latypoff. - - *) Bugfix: regular expressions in location were always tested in - case-sensitive mode; the bug had appeared in 0.8.25. - - *) Bugfix: nginx cached a 304 response if there was the "If-None-Match" - header line in a proxied request. - Thanks to Tim Dettrick and David Kostal. - - *) Bugfix: nginx/Windows tried to delete a temporary file twice if the - file should replace an already existent file. - - -Changes with nginx 0.8.30 15 Dec 2009 - - *) Change: now the default buffer size of the - "large_client_header_buffers" directive is 8K. - Thanks to Andrew Cholakian. - - *) Feature: the conf/fastcgi.conf for simple FastCGI configurations. - - *) Bugfix: nginx/Windows tried to rename a temporary file twice if the - file should replace an already existent file. - - *) Bugfix: of "double free or corruption" error issued if host could not - be resolved; the bug had appeared in 0.8.22. - Thanks to Konstantin Svist. - - *) Bugfix: in libatomic usage on some platforms. - Thanks to W-Mark Kubacki. - - -Changes with nginx 0.8.29 30 Nov 2009 - - *) Change: now the "009" status code is written to an access log for - proxied HTTP/0.9 responses. - - *) Feature: the "addition_types", "charset_types", "gzip_types", - "ssi_types", "sub_filter_types", and "xslt_types" directives support - an "*" parameter. - - *) Feature: GCC 4.1+ built-in atomic operations usage. - Thanks to W-Mark Kubacki. - - *) Feature: the --with-libatomic[=DIR] option in the configure. - Thanks to W-Mark Kubacki. - - *) Bugfix: listen unix domain socket had limited access rights. - - *) Bugfix: cached HTTP/0.9 responses were handled incorrectly. - - *) Bugfix: regular expression named captures given by "?P<...>" did not - work in a "server_name" directive. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.28 23 Nov 2009 - - *) Bugfix: nginx could not be built with the --without-pcre parameter; - the bug had appeared in 0.8.25. - - -Changes with nginx 0.8.27 17 Nov 2009 - - *) Bugfix: regular expressions did not work in nginx/Windows; the bug - had appeared in 0.8.25. - - -Changes with nginx 0.8.26 16 Nov 2009 - - *) Bugfix: in captures usage in "rewrite" directive; the bug had - appeared in 0.8.25. - - *) Bugfix: nginx could not be built without the --with-debug option; the - bug had appeared in 0.8.25. - - -Changes with nginx 0.8.25 16 Nov 2009 - - *) Change: now no message is written in an error log if a variable is - not found by $r->variable() method. - - *) Feature: the ngx_http_degradation_module. - - *) Feature: regular expression named captures. - - *) Feature: now URI part is not required a "proxy_pass" directive if - variables are used. - - *) Feature: now the "msie_padding" directive works for Chrome too. - - *) Bugfix: a segmentation fault occurred in a worker process on low - memory condition; the bug had appeared in 0.8.18. - - *) Bugfix: nginx sent gzipped responses to clients those do not support - gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared - in 0.8.16. - - -Changes with nginx 0.8.24 11 Nov 2009 - - *) Bugfix: nginx always added "Content-Encoding: gzip" response header - line in 304 responses sent by ngx_http_gzip_static_module. - - *) Bugfix: nginx could not be built without the --with-debug option; the - bug had appeared in 0.8.23. - - *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive - inherited incorrectly from previous level. - - *) Bugfix: in resolving empty name. - - -Changes with nginx 0.8.23 11 Nov 2009 - - *) Security: now SSL/TLS renegotiation is disabled. - Thanks to Maxim Dounin. - - *) Bugfix: listen unix domain socket did not inherit while online - upgrade. - - *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive did - not without yet another directive with any IP address. - - *) Bugfix: segmentation fault and infinite looping in resolver. - - *) Bugfix: in resolver. - Thanks to Artem Bokhan. - - -Changes with nginx 0.8.22 03 Nov 2009 - - *) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind" - directives. - - *) Feature: the "access" and the "deny" directives support IPv6. - - *) Feature: the "set_real_ip_from" directive supports IPv6 addresses in - request headers. - - *) Feature: the "unix:" parameter of the "set_real_ip_from" directive. - - *) Bugfix: nginx did not delete unix domain socket after configuration - testing. - - *) Bugfix: nginx deleted unix domain socket while online upgrade. - - *) Bugfix: the "!-x" operator did not work. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault might occur in a worker process, if - limit_rate was used in HTTPS server. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault might occur in a worker process while - $limit_rate logging. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault might occur in a worker process, if - there was no "listen" directive in "server" block; the bug had - appeared in 0.8.21. - - -Changes with nginx 0.8.21 26 Oct 2009 - - *) Feature: now the "-V" switch shows TLS SNI support. - - *) Feature: the "listen" directive of the HTTP module supports unix - domain sockets. - Thanks to Hongli Lai. - - *) Feature: the "default_server" parameter of the "listen" directive. - - *) Feature: now a "default" parameter is not required to set listen - socket options. - - *) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms; - - *) Bugfix: socket leak; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.20 14 Oct 2009 - - *) Change: now default SSL ciphers are "HIGH:!ADH:!MD5". - - *) Bugfix: the ngx_http_autoindex_module did not show the trailing slash - in links to a directory; the bug had appeared in 0.7.15. - - *) Bugfix: nginx did not close a log file set by the --error-log-path - configuration option; the bug had appeared in 0.7.53. - - *) Bugfix: nginx did not treat a comma as separator in the - "Cache-Control" backend response header line. - - *) Bugfix: nginx/Windows might not create temporary file, a cache file, - or "proxy/fastcgi_store"d file if a worker had no enough access - rights for top level directories. - - *) Bugfix: the "Set-Cookie" and "P3P" FastCGI response header lines were - not hidden while caching if no "fastcgi_hide_header" directives were - used with any parameters. - - *) Bugfix: nginx counted incorrectly disk cache size. - - -Changes with nginx 0.8.19 06 Oct 2009 - - *) Change: now SSLv2 protocol is disabled by default. - - *) Change: now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM". - - *) Bugfix: a "limit_req" directive did not work; the bug had appeared in - 0.8.18. - - -Changes with nginx 0.8.18 06 Oct 2009 - - *) Feature: the "read_ahead" directive. - - *) Feature: now several "perl_modules" directives may be used. - - *) Feature: the "limit_req_log_level" and "limit_conn_log_level" - directives. - - *) Bugfix: now "limit_req" directive conforms to the leaky bucket - algorithm. - Thanks to Maxim Dounin. - - *) Bugfix: nginx did not work on Linux/sparc. - Thanks to Marcus Ramberg. - - *) Bugfix: nginx sent '\0' in a "Location" response header line on MKCOL - request. - Thanks to Xie Zhenye. - - *) Bugfix: zero status code was logged instead of 499 status code; the - bug had appeared in 0.8.11. - - *) Bugfix: socket leak; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.17 28 Sep 2009 - - *) Security: now "/../" are disabled in "Destination" request header - line. - - *) Change: now $host variable value is always low case. - - *) Feature: the $ssl_session_id variable. - - *) Bugfix: socket leak; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.16 22 Sep 2009 - - *) Feature: the "image_filter_transparency" directive. - - *) Bugfix: "addition_types" directive was incorrectly named - "addtion_types". - - *) Bugfix: resolver cache poisoning. - Thanks to Matthew Dempsky. - - *) Bugfix: memory leak in resolver. - Thanks to Matthew Dempsky. - - *) Bugfix: invalid request line in $request variable was written in - access_log only if error_log was set to "info" or "debug" level. - - *) Bugfix: in PNG alpha-channel support in the - ngx_http_image_filter_module. - - *) Bugfix: nginx always added "Vary: Accept-Encoding" response header - line, if both "gzip_static" and "gzip_vary" were on. - - *) Bugfix: in UTF-8 encoding support by "try_files" directive in - nginx/Windows. - - *) Bugfix: in "post_action" directive usage; the bug had appeared in - 0.8.11. - Thanks to Igor Artemiev. - - -Changes with nginx 0.8.15 14 Sep 2009 - - *) Security: a segmentation fault might occur in worker process while - specially crafted request handling. - Thanks to Chris Ries. - - *) Bugfix: if names .domain.tld, .sub.domain.tld, and .domain-some.tld - were defined, then the name .sub.domain.tld was matched by - .domain.tld. - - *) Bugfix: in transparency support in the ngx_http_image_filter_module. - - *) Bugfix: in file AIO. - - *) Bugfix: in X-Accel-Redirect usage; the bug had appeared in 0.8.11. - - *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.14 07 Sep 2009 - - *) Bugfix: an expired cached response might stick in the "UPDATING" - state. - - *) Bugfix: a segmentation fault might occur in worker process, if - error_log was set to info or debug level. - Thanks to Sergey Bochenkov. - - *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11. - - *) Bugfix: an "error_page" directive did not redirect a 413 error; the - bug had appeared in 0.6.10. - - -Changes with nginx 0.8.13 31 Aug 2009 - - *) Bugfix: in the "aio sendfile" directive; the bug had appeared in - 0.8.12. - - *) Bugfix: nginx could not be built without the --with-file-aio option - on FreeBSD; the bug had appeared in 0.8.12. - - -Changes with nginx 0.8.12 31 Aug 2009 - - *) Feature: the "sendfile" parameter in the "aio" directive on FreeBSD. - - *) Bugfix: in try_files; the bug had appeared in 0.8.11. - - *) Bugfix: in memcached; the bug had appeared in 0.8.11. - - -Changes with nginx 0.8.11 28 Aug 2009 - - *) Change: now directive "gzip_disable msie6" does not disable gzipping - for MSIE 6.0 SV1. - - *) Feature: file AIO support on FreeBSD and Linux. - - *) Feature: the "directio_alignment" directive. - - -Changes with nginx 0.8.10 24 Aug 2009 - - *) Bugfix: memory leaks if GeoIP City database was used. - - *) Bugfix: in copying temporary files to permanent storage area; the bug - had appeared in 0.8.9. - - -Changes with nginx 0.8.9 17 Aug 2009 - - *) Feature: now the start cache loader runs in a separate process; this - should improve large caches handling. - - *) Feature: now temporary files and permanent storage area may reside at - different file systems. - - -Changes with nginx 0.8.8 10 Aug 2009 - - *) Bugfix: in handling FastCGI headers split in records. - - *) Bugfix: a segmentation fault occurred in worker process, if a request - was handled in two proxied or FastCGIed locations and a caching was - enabled in the first location; the bug had appeared in 0.8.7. - - -Changes with nginx 0.8.7 27 Jul 2009 - - *) Change: minimum supported OpenSSL version is 0.9.7. - - *) Change: the "ask" parameter of the "ssl_verify_client" directive was - changed to the "optional" parameter and now it checks a client - certificate if it was offered. - Thanks to Brice Figureau. - - *) Feature: the $ssl_client_verify variable. - Thanks to Brice Figureau. - - *) Feature: the "ssl_crl" directive. - Thanks to Brice Figureau. - - *) Feature: the "proxy" parameter of the "geo" directive. - - *) Feature: the "image_filter" directive supports variables for setting - size. - - *) Bugfix: the $ssl_client_cert variable usage corrupted memory; the bug - had appeared in 0.7.7. - Thanks to Sergey Zhuravlev. - - *) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did - not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate", - "X-Accel-Buffering", and "X-Accel-Charset" lines from backend - response header. - Thanks to Maxim Dounin. - - *) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend - response header lines; the bug had appeared in 0.7.44. - Thanks to Maxim Dounin. - - *) Bugfix: the "[alert] zero size buf" error if subrequest returns an - empty response; the bug had appeared in 0.8.5. - - -Changes with nginx 0.8.6 20 Jul 2009 - - *) Feature: the ngx_http_geoip_module. - - *) Bugfix: XSLT filter may fail with message "not well formed XML - document" for valid XML document. - Thanks to Kuramoto Eiji. - - *) Bugfix: now in MacOSX, Cygwin, and nginx/Windows locations given by a - regular expression are always tested in case insensitive mode. - - *) Bugfix: now nginx/Windows ignores trailing dots in URI. - Thanks to Hugo Leisink. - - *) Bugfix: name of file specified in --conf-path was not honored during - installation; the bug had appeared in 0.6.6. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.5 13 Jul 2009 - - *) Bugfix: now nginx allows underscores in a request method. - - *) Bugfix: a 500 error code was returned for invalid login/password - while HTTP Basic authentication on Windows. - - *) Bugfix: ngx_http_perl_module responses did not work in subrequests. - - *) Bugfix: in ngx_http_limit_req_module. - Thanks to Maxim Dounin. - - -Changes with nginx 0.8.4 22 Jun 2009 - - *) Bugfix: nginx could not be built --without-http-cache; the bug had - appeared in 0.8.3. - - -Changes with nginx 0.8.3 19 Jun 2009 - - *) Feature: the $upstream_cache_status variable. - - *) Bugfix: nginx could not be built on MacOSX 10.6. - - *) Bugfix: nginx could not be built --without-http-cache; the bug had - appeared in 0.8.2. - - *) Bugfix: a segmentation fault occurred in worker process, if a backend - 401 error was intercepted and the backend did not set the - "WWW-Authenticate" response header line. - Thanks to Eugene Mychlo. - - -Changes with nginx 0.8.2 15 Jun 2009 - - *) Bugfix: in open_file_cache and proxy/fastcgi cache interaction on - start up. - - *) Bugfix: open_file_cache might cache open file descriptors too long; - the bug had appeared in 0.7.4. - - -Changes with nginx 0.8.1 08 Jun 2009 - - *) Feature: the "updating" parameter in "proxy_cache_use_stale" and - "fastcgi_cache_use_stale" directives. - - *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request - header lines were passed to backend while caching if no - "proxy_set_header" directive was used with any parameters. - - *) Bugfix: the "Set-Cookie" and "P3P" response header lines were not - hidden while caching if no "proxy_hide_header/fastcgi_hide_header" - directives were used with any parameters. - - *) Bugfix: the ngx_http_image_filter_module did not support GIF87a - format. - Thanks to Denis Ilyinyh. - - *) Bugfix: nginx could not be built modules on Solaris 10 and early; the - bug had appeared in 0.7.56. - - -Changes with nginx 0.8.0 02 Jun 2009 - - *) Feature: the "keepalive_requests" directive. - - *) Feature: the "limit_rate_after" directive. - Thanks to Ivan Debnar. - - *) Bugfix: XLST filter did not work in subrequests. - - *) Bugfix: in relative paths handling in nginx/Windows. - - *) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache - in nginx/Windows. - - *) Bugfix: in memory allocation error handling. - Thanks to Maxim Dounin and Kirill A. Korinskiy. - - -Changes with nginx 0.7.59 25 May 2009 - - *) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods" - directives. - - *) Bugfix: socket leak; the bug had appeared in 0.7.25. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault occurred in worker process, if a request - had no body and the $request_body variable was used; - the bug had appeared in 0.7.58. - - *) Bugfix: the SSL modules might not built on Solaris and Linux; - the bug had appeared in 0.7.56. - - *) Bugfix: ngx_http_xslt_filter_module responses were not handled by - SSI, charset, and gzip filters. - - *) Bugfix: a "charset" directive did not set a charset to - ngx_http_gzip_static_module responses. - - -Changes with nginx 0.7.58 18 May 2009 - - *) Feature: a "listen" directive of the mail proxy module supports IPv6. - - *) Feature: the "image_filter_jpeg_quality" directive. - - *) Feature: the "client_body_in_single_buffer" directive. - - *) Feature: the $request_body variable. - - *) Bugfix: in ngx_http_autoindex_module in file name links having a ":" - symbol in the name. - - *) Bugfix: "make upgrade" procedure did not work; the bug had appeared - in 0.7.53. - Thanks to Denis F. Latypoff. - - -Changes with nginx 0.7.57 12 May 2009 - - *) Bugfix: a floating-point fault occurred in worker process, if the - ngx_http_image_filter_module errors were redirected to named - location; the bug had appeared in 0.7.56. - - -Changes with nginx 0.7.56 11 May 2009 - - *) Feature: nginx/Windows supports IPv6 in a "listen" directive of the - HTTP module. - - *) Bugfix: in ngx_http_image_filter_module. - - -Changes with nginx 0.7.55 06 May 2009 - - *) Bugfix: the http_XXX parameters in "proxy_cache_use_stale" and - "fastcgi_cache_use_stale" directives did not work. - - *) Bugfix: fastcgi cache did not cache header only responses. - - *) Bugfix: of "select() failed (9: Bad file descriptor)" error in - nginx/Unix and "select() failed (10038: ...)" error in nginx/Windows. - - *) Bugfix: a segmentation fault might occur in worker process, if an - "debug_connection" directive was used; the bug had appeared in - 0.7.54. - - *) Bugfix: fix ngx_http_image_filter_module building errors. - - *) Bugfix: the files bigger than 2G could not be transferred using - $r->sendfile. - Thanks to Maxim Dounin. - - -Changes with nginx 0.7.54 01 May 2009 - - *) Feature: the ngx_http_image_filter_module. - - *) Feature: the "proxy_ignore_headers" and "fastcgi_ignore_headers" - directives. - - *) Bugfix: a segmentation fault might occur in worker process, if an - "open_file_cache_errors off" directive was used; the bug had appeared - in 0.7.53. - - *) Bugfix: the "port_in_redirect off" directive did not work; the bug - had appeared in 0.7.39. - - *) Bugfix: improve handling of "select" method errors. - - *) Bugfix: of "select() failed (10022: ...)" error in nginx/Windows. - - *) Bugfix: in error text descriptions in nginx/Windows; the bug had - appeared in 0.7.53. - - -Changes with nginx 0.7.53 27 Apr 2009 - - *) Change: now a log set by --error-log-path is created from the very - start-up. - - *) Feature: now the start up errors and warnings are outputted to an - error_log and stderr. - - *) Feature: the empty --prefix= configure parameter forces nginx to use - a directory where it was run as prefix. - - *) Feature: the -p switch. - - *) Feature: the -s switch on Unix platforms. - - *) Feature: the -? and -h switches. - Thanks to Jerome Loyet. - - *) Feature: now switches may be set in condensed form. - - *) Bugfix: nginx/Windows did not work if configuration file was given by - the -c switch. - - *) Bugfix: temporary files might be not removed if the "proxy_store", - "fastcgi_store", "proxy_cache", or "fastcgi_cache" were used. - Thanks to Maxim Dounin. - - *) Bugfix: an incorrect value was passed to mail proxy authentication - server in "Auth-Method" header line; the bug had appeared - in 0.7.34. - Thanks to Simon Lecaille. - - *) Bugfix: system error text descriptions were not logged on Linux; - the bug had appeared in 0.7.45. - - *) Bugfix: the "fastcgi_cache_min_uses" directive did not work. - Thanks to Andrew Vorobyoff. - - -Changes with nginx 0.7.52 20 Apr 2009 - - *) Feature: the first native Windows binary release. - - *) Bugfix: in processing HEAD method while caching. - - *) Bugfix: in processing the "If-Modified-Since", "If-Range", etc. - client request header lines while caching. - - *) Bugfix: now the "Set-Cookie" and "P3P" header lines are hidden in - cacheable responses. - - *) Bugfix: if nginx was built with the ngx_http_perl_module and with a - perl which supports threads, then during a master process exit the - message "panic: MUTEX_LOCK" might be issued. - - *) Bugfix: nginx could not be built --without-http-cache; the bug had - appeared in 0.7.48. - - *) Bugfix: nginx could not be built on platforms different from i386, - amd64, sparc, and ppc; the bug had appeared in 0.7.42. - - -Changes with nginx 0.7.51 12 Apr 2009 - - *) Feature: the "try_files" directive supports a response code in the - fallback parameter. - - *) Feature: now any response code can be used in the "return" directive. - - *) Bugfix: the "error_page" directive made an external redirect without - query string; the bug had appeared in 0.7.44. - - *) Bugfix: if servers listened on several defined explicitly addresses, - then virtual servers might not work; the bug had appeared in 0.7.39. - - -Changes with nginx 0.7.50 06 Apr 2009 - - *) Bugfix: the $arg_... variables did not work; the bug had appeared in - 0.7.49. - - -Changes with nginx 0.7.49 06 Apr 2009 - - *) Bugfix: a segmentation fault might occur in worker process, if the - $arg_... variables were used; the bug had appeared in 0.7.48. - - -Changes with nginx 0.7.48 06 Apr 2009 - - *) Feature: the "proxy_cache_key" directive. - - *) Bugfix: now nginx takes into account the "X-Accel-Expires", - "Expires", and "Cache-Control" header lines in a backend response. - - *) Bugfix: now nginx caches responses for the GET requests only. - - *) Bugfix: the "fastcgi_cache_key" directive was not inherited. - - *) Bugfix: the $arg_... variables did not work with SSI subrequests. - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not be built with uclibc library. - Thanks to Timothy Redaelli. - - *) Bugfix: nginx could not be built on OpenBSD; the bug had - appeared in 0.7.46. - - -Changes with nginx 0.7.47 01 Apr 2009 - - *) Bugfix: nginx could not be built on FreeBSD 6 and early versions; the - bug had appeared in 0.7.46. - - *) Bugfix: nginx could not be built on MacOSX; the bug had - appeared in 0.7.46. - - *) Bugfix: if the "max_size" parameter was set, then the cache manager - might purge a whole cache; the bug had appeared in 0.7.46. - - *) Change: a segmentation fault might occur in worker process, if the - "proxy_cache"/"fastcgi_cache" and the "proxy_cache_valid"/ - "fastcgi_cache_valid" were set on different levels; the bug had - appeared in 0.7.46. - - *) Bugfix: a segmentation fault might occur in worker process, if a - request was redirected to a proxied or FastCGI server via error_page - or try_files; the bug had appeared in 0.7.44. - - -Changes with nginx 0.7.46 30 Mar 2009 - - *) Bugfix: the previous release tarball was incorrect. - - -Changes with nginx 0.7.45 30 Mar 2009 - - *) Change: now the "proxy_cache" and the "proxy_cache_valid" directives - can be set on different levels. - - *) Change: the "clean_time" parameter of the "proxy_cache_path" - directive is canceled. - - *) Feature: the "max_size" parameter of the "proxy_cache_path" - directive. - - *) Feature: the ngx_http_fastcgi_module preliminary cache support. - - *) Feature: now on shared memory allocation errors directive and zone - names are logged. - - *) Bugfix: the directive "add_header last-modified ''" did not delete a - "Last-Modified" response header line; the bug had appeared in 0.7.44. - - *) Bugfix: a relative path in the "auth_basic_user_file" directive given - without variables did not work; the bug had appeared in 0.7.44. - Thanks to Jerome Loyet. - - *) Bugfix: in an "alias" directive given using variables without - references to captures of regular expressions; the bug had appeared - in 0.7.42. - - -Changes with nginx 0.7.44 23 Mar 2009 - - *) Feature: the ngx_http_proxy_module preliminary cache support. - - *) Feature: the --with-pcre option in the configure. - - *) Feature: the "try_files" directive is now allowed on the server block - level. - - *) Bugfix: the "try_files" directive handled incorrectly a query string - in a fallback parameter. - - *) Bugfix: the "try_files" directive might test incorrectly directories. - - *) Bugfix: if there was a single server for given address:port pair, - then captures in regular expressions in a "server_name" directive did - not work. - - -Changes with nginx 0.7.43 18 Mar 2009 - - *) Bugfix: a request was handled incorrectly, if a "root" directive used - variables; the bug had appeared in 0.7.42. - - *) Bugfix: if a server listened on wildcard address, then the - $server_addr variable value was "0.0.0.0"; the bug had appeared in - 0.7.36. - - -Changes with nginx 0.7.42 16 Mar 2009 - - *) Change: now the "Invalid argument" error returned by - setsockopt(TCP_NODELAY) on Solaris, is ignored. - - *) Change: now if a file specified in a "auth_basic_user_file" directive - is absent, then the 403 error is returned instead of the 500 one. - - *) Feature: the "auth_basic_user_file" directive supports variables. - Thanks to Kirill A. Korinskiy. - - *) Feature: the "listen" directive supports the "ipv6only" parameter. - Thanks to Zhang Hua. - - *) Bugfix: in an "alias" directive with references to captures of - regular expressions; the bug had appeared in 0.7.40. - - *) Bugfix: compatibility with Tru64 UNIX. - Thanks to Dustin Marquess. - - *) Bugfix: nginx could not be built without PCRE library; the bug had - appeared in 0.7.41. - - -Changes with nginx 0.7.41 11 Mar 2009 - - *) Bugfix: a segmentation fault might occur in worker process, if a - "server_name" or a "location" directives had captures in regular - expressions; the issue had appeared in 0.7.40. - Thanks to Vladimir Sopot. - - -Changes with nginx 0.7.40 09 Mar 2009 - - *) Feature: the "location" directive supports captures in regular - expressions. - - *) Feature: an "alias" directive with capture references may be used - inside a location given by a regular expression with captures. - - *) Feature: the "server_name" directive supports captures in regular - expressions. - - *) Workaround: the ngx_http_autoindex_module did not show the trailing - slash in directories on XFS filesystem; the issue had appeared in - 0.7.15. - Thanks to Dmitry Kuzmenko. - - -Changes with nginx 0.7.39 02 Mar 2009 - - *) Bugfix: large response with SSI might hang, if gzipping was enabled; - the bug had appeared in 0.7.28. - Thanks to Artem Bokhan. - - *) Bugfix: a segmentation fault might occur in worker process, if short - static variants are used in a "try_files" directive. - - -Changes with nginx 0.7.38 23 Feb 2009 - - *) Feature: authentication failures logging. - - *) Bugfix: name/password in auth_basic_user_file were ignored after odd - number of empty lines. - Thanks to Alexander Zagrebin. - - *) Bugfix: a segmentation fault occurred in a master process, if long - path was used in unix domain socket; the bug had appeared in 0.7.36. - - -Changes with nginx 0.7.37 21 Feb 2009 - - *) Bugfix: directives using upstreams did not work; the bug had appeared - in 0.7.36. - - -Changes with nginx 0.7.36 21 Feb 2009 - - *) Feature: a preliminary IPv6 support; the "listen" directive of the - HTTP module supports IPv6. - - *) Bugfix: the $ancient_browser variable did not work for browsers - preset by a "modern_browser" directives. - - -Changes with nginx 0.7.35 16 Feb 2009 - - *) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for - asymmetric ciphers. - Thanks to Marcin Gozdalik. - - *) Bugfix: a "try_files" directive set MIME type depending on an - original request extension. - - *) Bugfix: "*domain.tld" names were handled incorrectly in - "server_name", "valid_referers", and "map" directives, if - ".domain.tld" and ".subdomain.domain.tld" wildcards were used; - the bug had appeared in 0.7.9. - - -Changes with nginx 0.7.34 10 Feb 2009 - - *) Feature: the "off" parameter of the "if_modified_since" directive. - - *) Feature: now nginx sends an HELO/EHLO command after a XCLIENT - command. - Thanks to Maxim Dounin. - - *) Feature: Microsoft specific "AUTH LOGIN with User Name" mode support - in mail proxy server. - Thanks to Maxim Dounin. - - *) Bugfix: in a redirect rewrite directive original arguments were - concatenated with new arguments by a "?" rather than an "&"; - the bug had appeared in 0.1.18. - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not be built on AIX. - - -Changes with nginx 0.7.33 02 Feb 2009 - - *) Bugfix: a double response might be returned if the epoll or rtsig - methods are used and a redirect was returned to a request with body. - Thanks to Eden Li. - - *) Bugfix: the $sent_http_location variable was empty for some redirects - types. - - *) Bugfix: a segmentation fault might occur in worker process if - "resolver" directive was used in SMTP proxy. - - -Changes with nginx 0.7.32 26 Jan 2009 - - *) Feature: now a directory existence testing can be set explicitly in - the "try_files" directive. - - *) Bugfix: fastcgi_store stored files not always. - - *) Bugfix: in geo ranges. - - *) Bugfix: in shared memory allocations if nginx was built without - debugging. - Thanks to Andrey Kvasov. - - -Changes with nginx 0.7.31 19 Jan 2009 - - *) Change: now the "try_files" directive tests files only and ignores - directories. - - *) Feature: the "fastcgi_split_path_info" directive. - - *) Bugfixes in an "Expect" request header line support. - - *) Bugfixes in geo ranges. - - *) Bugfix: in a miss case ngx_http_memcached_module returned the "END" - line as response body instead of default 404 page body; the bug had - appeared in 0.7.18. - Thanks to Maxim Dounin. - - *) Bugfix: while SMTP proxying nginx issued message "250 2.0.0 OK" - instead of "235 2.0.0 OK"; the bug had appeared in 0.7.22. - Thanks to Maxim Dounin. - - -Changes with nginx 0.7.30 24 Dec 2008 - - *) Bugfix: a segmentation fault occurred in worker process, if variables - were used in the "fastcgi_pass" or "proxy_pass" directives and host - name must be resolved; the bug had appeared in 0.7.29. - - -Changes with nginx 0.7.29 24 Dec 2008 - - *) Bugfix: the "fastcgi_pass" and "proxy_pass" directives did not - support variables if unix domain sockets were used. - - *) Bugfixes in subrequest processing; the bugs had appeared in 0.7.25. - - *) Bugfix: a "100 Continue" response was issued for HTTP/1.0 requests; - Thanks to Maxim Dounin. - - *) Bugfix: in memory allocation in the ngx_http_gzip_filter_module on - Cygwin. - - -Changes with nginx 0.7.28 22 Dec 2008 - - *) Change: in memory allocation in the ngx_http_gzip_filter_module. - - *) Change: the default "gzip_buffers" directive values have been changed - to 32 4k or 16 8k from 4 4k/8k. - - -Changes with nginx 0.7.27 15 Dec 2008 - - *) Feature: the "try_files" directive. - - *) Feature: variables support in the "fastcgi_pass" directive. - - *) Feature: now the $geo variable may get an address from a variable. - Thanks to Andrei Nigmatulin. - - *) Feature: now a location's modifier may be used without space before - name. - - *) Feature: the $upstream_response_length variable. - - *) Bugfix: now a "add_header" directive does not add an empty value. - - *) Bugfix: if zero length static file was requested, then nginx just - closed connection; the bug had appeared in 0.7.25. - - *) Bugfix: a MOVE method could not move file in non-existent directory. - - *) Bugfix: a segmentation fault occurred in worker process, if no one - named location was defined in server, but some one was used in an - error_page directive. - Thanks to Sergey Bochenkov. - - -Changes with nginx 0.7.26 08 Dec 2008 - - *) Bugfix: in subrequest processing; the bug had appeared in 0.7.25. - - -Changes with nginx 0.7.25 08 Dec 2008 - - *) Change: in subrequest processing. - - *) Change: now POSTs without "Content-Length" header line are allowed. - - *) Bugfix: now the "limit_req" and "limit_conn" directives log a - prohibition reason. - - *) Bugfix: in the "delete" parameter of the "geo" directive. - - -Changes with nginx 0.7.24 01 Dec 2008 - - *) Feature: the "if_modified_since" directive. - - *) Bugfix: nginx did not process a FastCGI server response, if the - server send too many messages to stderr before response. - - *) Bugfix: the "$cookie_..." variables did not work in the SSI and the - perl module. - - -Changes with nginx 0.7.23 27 Nov 2008 - - *) Feature: the "delete" and "ranges" parameters in the "geo" directive. - - *) Feature: speeding up loading of geo base with large number of values. - - *) Feature: decrease of memory required for geo base load. - - -Changes with nginx 0.7.22 20 Nov 2008 - - *) Feature: the "none" parameter in the "smtp_auth" directive. - Thanks to Maxim Dounin. - - *) Feature: the "$cookie_..." variables. - - *) Bugfix: the "directio" directive did not work in XFS filesystem. - - *) Bugfix: the resolver did not understand big DNS responses. - Thanks to Zyb. - - -Changes with nginx 0.7.21 11 Nov 2008 - - *) Changes in the ngx_http_limit_req_module. - - *) Feature: the EXSLT support in the ngx_http_xslt_module. - Thanks to Denis F. Latypoff. - - *) Workaround: compatibility with glibc 2.3. - Thanks to Eric Benson and Maxim Dounin. - - *) Bugfix: nginx could not run on MacOSX 10.4 and earlier; the bug had - appeared in 0.7.6. - - -Changes with nginx 0.7.20 10 Nov 2008 - - *) Changes in the ngx_http_gzip_filter_module. - - *) Feature: the ngx_http_limit_req_module. - - *) Bugfix: worker processes might exit on a SIGBUS signal on sparc and - ppc platforms; the bug had appeared in 0.7.3. - Thanks to Maxim Dounin. - - *) Bugfix: the "proxy_pass http://host/some:uri" directives did not - work; the bug had appeared in 0.7.12. - - *) Bugfix: in HTTPS mode requests might fail with the "bad write retry" - error. - - *) Bugfix: the ngx_http_secure_link_module did not work inside - locations, whose names are less than 3 characters. - - *) Bugfix: $server_addr variable might have no value. - - -Changes with nginx 0.7.19 13 Oct 2008 - - *) Bugfix: version number update. - - -Changes with nginx 0.7.18 13 Oct 2008 - - *) Change: the "underscores_in_headers" directive; now nginx does not - allows underscores in a client request header line names. - - *) Feature: the ngx_http_secure_link_module. - - *) Feature: the "real_ip_header" directive supports any header. - - *) Feature: the "log_subrequest" directive. - - *) Feature: the $realpath_root variable. - - *) Feature: the "http_502" and "http_504" parameters of the - "proxy_next_upstream" directive. - - *) Bugfix: the "http_503" parameter of the "proxy_next_upstream" or - "fastcgi_next_upstream" directives did not work. - - *) Bugfix: nginx might send a "Transfer-Encoding: chunked" header line - for HEAD requests. - - *) Bugfix: now accept threshold depends on worker_connections. - - -Changes with nginx 0.7.17 15 Sep 2008 - - *) Feature: now the "directio" directive works on Linux. - - *) Feature: the $pid variable. - - *) Bugfix: the "directio" optimization that had appeared in 0.7.15 did - not work with open_file_cache. - - *) Bugfix: the "access_log" with variables did not work on Linux; the - bug had appeared in 0.7.7. - - *) Bugfix: the ngx_http_charset_module did not understand quoted charset - name received from backend. - - -Changes with nginx 0.7.16 08 Sep 2008 - - *) Bugfix: nginx could not be built on 64-bit platforms; the bug had - appeared in 0.7.15. - - -Changes with nginx 0.7.15 08 Sep 2008 - - *) Feature: the ngx_http_random_index_module. - - *) Feature: the "directio" directive has been optimized for file - requests starting from arbitrary position. - - *) Feature: the "directio" directive turns off sendfile if it is - necessary. - - *) Feature: now nginx allows underscores in a client request header line - names. - - -Changes with nginx 0.7.14 01 Sep 2008 - - *) Change: now the ssl_certificate and ssl_certificate_key directives - have no default values. - - *) Feature: the "listen" directive supports the "ssl" parameter. - - *) Feature: now nginx takes into account a time zone change while - reconfiguration on FreeBSD and Linux. - - *) Bugfix: the "listen" directive parameters such as "backlog", - "rcvbuf", etc. were not set, if a default server was not the first - one. - - *) Bugfix: if URI part captured by a "rewrite" directive was used as a - query string, then the query string was not escaped. - - *) Bugfix: configuration file validity test improvements. - - -Changes with nginx 0.7.13 26 Aug 2008 - - *) Bugfix: nginx could not be built on Linux and Solaris; the bug had - appeared in 0.7.12. - - -Changes with nginx 0.7.12 26 Aug 2008 - - *) Feature: the "server_name" directive supports empty name "". - - *) Feature: the "gzip_disable" directive supports special "msie6" mask. - - *) Bugfix: if the "max_fails=0" parameter was used in upstream with - several servers, then a worker process exited on a SIGFPE signal. - Thanks to Maxim Dounin. - - *) Bugfix: a request body was dropped while redirection via an - "error_page" directive. - - *) Bugfix: a full response was returned for request method HEAD while - redirection via an "error_page" directive. - - *) Bugfix: the $r->header_in() method did not return value of the - "Host", "User-Agent", and "Connection" request header lines; the bug - had appeared in 0.7.0. - - -Changes with nginx 0.7.11 18 Aug 2008 - - *) Change: now ngx_http_charset_module does not work by default with - text/css MIME type. - - *) Feature: now nginx returns the 405 status code for POST method - requesting a static file only if the file exists. - - *) Feature: the "proxy_ssl_session_reuse" directive. - - *) Bugfix: a "proxy_pass" directive without URI part might use original - request after the "X-Accel-Redirect" redirection was used. - - *) Bugfix: if a directory has search only rights and the first index - file was absent, then nginx returned the 500 status code. - - *) Bugfix: in inclusive locations; the bugs had appeared in 0.7.1. - - -Changes with nginx 0.7.10 13 Aug 2008 - - *) Bugfix: in the "addition_types", "charset_types", "gzip_types", - "ssi_types", "sub_filter_types", and "xslt_types" directives; the - bugs had appeared in 0.7.9. - - *) Bugfix: of recursive error_page for 500 status code. - - *) Bugfix: now the ngx_http_realip_module sets address not for whole - keepalive connection, but for each request passed via the connection. - - -Changes with nginx 0.7.9 12 Aug 2008 - - *) Change: now ngx_http_charset_module works by default with following - MIME types: text/html, text/css, text/xml, text/plain, - text/vnd.wap.wml, application/x-javascript, and application/rss+xml. - - *) Feature: the "charset_types" and "addition_types" directives. - - *) Feature: now the "gzip_types", "ssi_types", and "sub_filter_types" - directives use hash. - - *) Feature: the ngx_cpp_test_module. - - *) Feature: the "expires" directive supports daily time. - - *) Feature: the ngx_http_xslt_module improvements and bug fixing. - Thanks to Denis F. Latypoff and Maxim Dounin. - - *) Bugfix: the "log_not_found" directive did not work for index files - tests. - - *) Bugfix: HTTPS connections might hang, if kqueue, epoll, rtsig, or - eventport methods were used; the bug had appeared in 0.7.7. - - *) Bugfix: if the "server_name", "valid_referers", and "map" directives - used an "*.domain.tld" wildcard and exact name "domain.tld" was not - set, then the exact name was matched by the wildcard; the bug had - appeared in 0.3.18. - - -Changes with nginx 0.7.8 04 Aug 2008 - - *) Feature: the ngx_http_xslt_module. - - *) Feature: the "$arg_..." variables. - - *) Feature: Solaris directio support. - Thanks to Ivan Debnar. - - *) Bugfix: now if FastCGI server sends a "Location" header line without - status line, then nginx uses 302 status code. - Thanks to Maxim Dounin. - - -Changes with nginx 0.7.7 30 Jul 2008 - - *) Change: now the EAGAIN error returned by connect() is not considered - as temporary error. - - *) Change: now the $ssl_client_cert variable value is a certificate with - TAB character intended before each line except first one; an - unchanged certificate is available in the $ssl_client_raw_cert - variable. - - *) Feature: the "ask" parameter in the "ssl_verify_client" directive. - - *) Feature: byte-range processing improvements. - Thanks to Maxim Dounin. - - *) Feature: the "directio" directive. - Thanks to Jiang Hong. - - *) Feature: MacOSX 10.5 sendfile() support. - - *) Bugfix: now in MacOSX and Cygwin locations are tested in case - insensitive mode; however, the compare is provided by single-byte - locales only. - - *) Bugfix: mail proxy SSL connections hanged, if select, poll, or - /dev/poll methods were used. - - *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module. - - -Changes with nginx 0.7.6 07 Jul 2008 - - *) Bugfix: now if variables are used in the "access_log" directive a - request root existence is always tested. - - *) Bugfix: the ngx_http_flv_module did not support several values in a - query string. - - -Changes with nginx 0.7.5 01 Jul 2008 - - *) Bugfixes in variables support in the "access_log" directive; the bugs - had appeared in 0.7.4. - - *) Bugfix: nginx could not be built --without-http_gzip_module; the bug - had appeared in 0.7.3. - Thanks to Kirill A. Korinskiy. - - *) Bugfix: if sub_filter and SSI were used together, then responses - might were transferred incorrectly. - - -Changes with nginx 0.7.4 30 Jun 2008 - - *) Feature: variables support in the "access_log" directive. - - *) Feature: the "open_log_file_cache" directive. - - *) Feature: the -g switch. - - *) Feature: the "Expect" request header line support. - - *) Bugfix: large SSI inclusions might be truncated. - - -Changes with nginx 0.7.3 23 Jun 2008 - - *) Change: the "rss" extension MIME type has been changed to - "application/rss+xml". - - *) Change: now the "gzip_vary" directive turned on issues a - "Vary: Accept-Encoding" header line for uncompressed responses too. - - *) Feature: now the "rewrite" directive does a redirect automatically if - the "https://" protocol is used. - - *) Bugfix: the "proxy_pass" directive did not work with the HTTPS - protocol; the bug had appeared in 0.6.9. - - -Changes with nginx 0.7.2 16 Jun 2008 - - *) Feature: now nginx supports EDH key exchange ciphers. - - *) Feature: the "ssl_dhparam" directive. - - *) Feature: the $ssl_client_cert variable. - Thanks to Manlio Perillo. - - *) Bugfix: after changing URI via a "rewrite" directive nginx did not - search a new location; the bug had appeared in 0.7.1. - Thanks to Maxim Dounin. - - *) Bugfix: nginx could not be built without PCRE library; the bug had - appeared in 0.7.1. - - *) Bugfix: when a request to a directory was redirected with the slash - added, nginx dropped a query string from the original request. - - -Changes with nginx 0.7.1 26 May 2008 - - *) Change: now locations are searched in a tree. - - *) Change: the "optimize_server_names" directive was canceled due to the - "server_name_in_redirect" directive introduction. - - *) Change: some long deprecated directives are not supported anymore. - - *) Change: the "none" parameter in the "ssl_session_cache" directive; - now this is default parameter. - Thanks to Rob Mueller. - - *) Bugfix: worker processes might not catch reconfiguration and log - rotation signals. - - *) Bugfix: nginx could not be built on latest Fedora 9 Linux. - Thanks to Roxis. - - -Changes with nginx 0.7.0 19 May 2008 - - *) Change: now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX - in an access_log. - Thanks to Maxim Dounin. - - *) Change: now nginx allows several "Host" request header line. - - *) Feature: the "modified" flag in the "expires" directive. - - *) Feature: the $uid_got and $uid_set variables may be used at any - request processing stage. - - *) Feature: the $hostname variable. - Thanks to Andrei Nigmatulin. - - *) Feature: DESTDIR support. - Thanks to Todd A. Fisher and Andras Voroskoi. - - *) Bugfix: a segmentation fault might occur in worker process on Linux, - if keepalive was enabled. - - -Changes with nginx 0.6.31 12 May 2008 - - *) Bugfix: nginx did not process FastCGI response if header was at the - end of FastCGI record; the bug had appeared in 0.6.2. - Thanks to Sergey Serov. - - *) Bugfix: a segmentation fault might occur in worker process if a file - was deleted and the "open_file_cache_errors" directive was off. - - -Changes with nginx 0.6.30 29 Apr 2008 - - *) Change: now if an "include" directive pattern does not match any - file, then nginx does not issue an error. - - *) Feature: now the time in directives may be specified without spaces, - for example, "1h50m". - - *) Bugfix: memory leaks if the "ssl_verify_client" directive was on. - Thanks to Chavelle Vincent. - - *) Bugfix: the "sub_filter" directive might set text to change into - output. - - *) Bugfix: the "error_page" directive did not take into account - arguments in redirected URI. - - *) Bugfix: now nginx always opens files in binary mode under Cygwin. - - *) Bugfix: nginx could not be built on OpenBSD; the bug had appeared in - 0.6.15. - - -Changes with nginx 0.6.29 18 Mar 2008 - - *) Feature: the ngx_google_perftools_module. - - *) Bugfix: the ngx_http_perl_module could not be built on 64-bit - platforms; the bug had appeared in 0.6.27. - - -Changes with nginx 0.6.28 13 Mar 2008 - - *) Bugfix: the rtsig method could not be built; the bug had appeared in - 0.6.27. - - -Changes with nginx 0.6.27 12 Mar 2008 - - *) Change: now by default the rtsig method is not built on - Linux 2.6.18+. - - *) Change: now a request method is not changed while redirection to a - named location via an "error_page" directive. - - *) Feature: the "resolver" and "resolver_timeout" directives in SMTP - proxy. - - *) Feature: the "post_action" directive supports named locations. - - *) Bugfix: a segmentation fault occurred in worker process, if a request - was redirected from proxy, FastCGI, or memcached location to static - named locations. - - *) Bugfix: browsers did not repeat SSL handshake if there is no valid - client certificate in first handshake. - Thanks to Alexander V. Inyukhin. - - *) Bugfix: if response code 495-497 was redirected via an "error_page" - directive without code change, then nginx tried to allocate too many - memory. - - *) Bugfix: memory leak in long-lived non buffered connections. - - *) Bugfix: memory leak in resolver. - - *) Bugfix: a segmentation fault occurred in worker process, if a request - was redirected from proxy, FastCGI, or memcached location to static - named locations. - - *) Bugfix: in the $proxy_host and $proxy_port variables caching. - Thanks to Sergey Bochenkov. - - *) Bugfix: a "proxy_pass" directive with variables used incorrectly the - same port as in another "proxy_pass" directive with the same host - name and without variables. - Thanks to Sergey Bochenkov. - - *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some - 64-bit platforms while reconfiguration. - - *) Bugfix: a segmentation fault occurred in worker process, if empty - stub block was used second time in SSI. - - *) Bugfix: in copying URI part contained escaped symbols into arguments. - - -Changes with nginx 0.6.26 11 Feb 2008 - - *) Bugfix: the "proxy_store" and "fastcgi_store" directives did not - check a response length. - - *) Bugfix: a segmentation fault occurred in worker process, if big value - was used in a "expires" directive. - Thanks to Joaquin Cuenca Abela. - - *) Bugfix: nginx incorrectly detected cache line size on Pentium 4. - Thanks to Gena Makhomed. - - *) Bugfix: in proxied or FastCGI subrequests a client original method - was used instead of the GET method. - - *) Bugfix: socket leak in HTTPS mode if deferred accept was used. - Thanks to Ben Maurer. - - *) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed - (SSL: )"; the bug had appeared in 0.6.23. - - *) Bugfix: in HTTPS mode requests might fail with the "bad write retry" - error; the bug had appeared in 0.6.23. - - -Changes with nginx 0.6.25 08 Jan 2008 - - *) Change: now the "server_name_in_redirect" directive is used instead - of the "server_name" directive's special "*" parameter. - - *) Change: now wildcard and regex names can be used as main name in a - "server_name" directive. - - *) Change: the "satisfy_any" directive was replaced by the "satisfy" - directive. - - *) Workaround: old worker processes might hog CPU after reconfiguration - if they was run under Linux OpenVZ. - - *) Feature: the "min_delete_depth" directive. - - *) Bugfix: the COPY and MOVE methods did not work with single files. - - *) Bugfix: the ngx_http_gzip_static_module did not allow the - ngx_http_dav_module to work; the bug had appeared in 0.6.23. - - *) Bugfix: socket leak in HTTPS mode if deferred accept was used. - Thanks to Ben Maurer. - - *) Bugfix: nginx could not be built without PCRE library; the bug had - appeared in 0.6.23. - - -Changes with nginx 0.6.24 27 Dec 2007 - - *) Bugfix: a segmentation fault might occur in worker process if HTTPS - was used; the bug had appeared in 0.6.23. - - -Changes with nginx 0.6.23 27 Dec 2007 - - *) Change: the "off" parameter in the "ssl_session_cache" directive; now - this is default parameter. - - *) Change: the "open_file_cache_retest" directive was renamed to the - "open_file_cache_valid". - - *) Feature: the "open_file_cache_min_uses" directive. - - *) Feature: the ngx_http_gzip_static_module. - - *) Feature: the "gzip_disable" directive. - - *) Feature: the "memcached_pass" directive may be used inside the "if" - block. - - *) Bugfix: a segmentation fault occurred in worker process, if the - "memcached_pass" and "if" directives were used in the same location. - - *) Bugfix: if a "satisfy_any on" directive was used and not all access - and auth modules directives were set, then other given access and - auth directives were not tested; - - *) Bugfix: regex parameters in a "valid_referers" directive were not - inherited from previous level. - - *) Bugfix: a "post_action" directive did run if a request was completed - with 499 status code. - - *) Bugfix: optimization of 16K buffer usage in a SSL connection. - Thanks to Ben Maurer. - - *) Bugfix: the STARTTLS in SMTP mode did not work. - Thanks to Oleg Motienko. - - *) Bugfix: in HTTPS mode requests might fail with the "bad write retry" - error; the bug had appeared in 0.5.13. - - -Changes with nginx 0.6.22 19 Dec 2007 - - *) Change: now all ngx_http_perl_module methods return values copied to - perl's allocated memory. - - *) Bugfix: if nginx was built with ngx_http_perl_module, the perl before - 5.8.6 was used, and perl supported threads, then during - reconfiguration the master process aborted; the bug had appeared in - 0.5.9. - Thanks to Boris Zhmurov. - - *) Bugfix: the ngx_http_perl_module methods may get invalid values of - the regex captures. - - *) Bugfix: a segmentation fault occurred in worker process, if the - $r->has_request_body() method was called for a request whose small - request body was already received. - - *) Bugfix: large_client_header_buffers did not freed before going to - keep-alive state. - Thanks to Olexander Shtepa. - - *) Bugfix: the last address was missed in the $upstream_addr variable; - the bug had appeared in 0.6.18. - - *) Bugfix: the "fastcgi_catch_stderr" directive did return error code; - now it returns 502 code, that can be rerouted to a next server using - the "fastcgi_next_upstream invalid_header" directive. - - *) Bugfix: a segmentation fault occurred in master process if the - "fastcgi_catch_stderr" directive was used; the bug had appeared in - 0.6.10. - Thanks to Manlio Perillo. - - -Changes with nginx 0.6.21 03 Dec 2007 - - *) Change: if variable values used in a "proxy_pass" directive contain - IP-addresses only, then a "resolver" directive is not mandatory. - - *) Bugfix: a segmentation fault might occur in worker process if a - "proxy_pass" directive with URI-part was used; the bug had appeared - in 0.6.19. - - *) Bugfix: if resolver was used on platform that does not support - kqueue, then nginx issued an alert "name is out of response". - Thanks to Andrei Nigmatulin. - - *) Bugfix: if the $server_protocol was used in FastCGI parameters and a - request line length was near to the "client_header_buffer_size" - directive value, then nginx issued an alert "fastcgi: the request - record is too big". - - *) Bugfix: if a plain text HTTP/0.9 version request was made to HTTPS - server, then nginx returned usual response. - - -Changes with nginx 0.6.20 28 Nov 2007 - - *) Bugfix: a segmentation fault might occur in worker process if a - "proxy_pass" directive with URI-part was used; the bug had appeared - in 0.6.19. - - -Changes with nginx 0.6.19 27 Nov 2007 - - *) Bugfix: the 0.6.18 version could not be built. - - -Changes with nginx 0.6.18 27 Nov 2007 - - *) Change: now the ngx_http_userid_module adds start time microseconds - to the cookie field contains a pid value. - - *) Change: now the full request line instead of URI only is written to - error_log. - - *) Feature: variables support in the "proxy_pass" directive. - - *) Feature: the "resolver" and "resolver_timeout" directives. - - *) Feature: now the directive "add_header last-modified ''" deletes a - "Last-Modified" response header line. - - *) Bugfix: the "limit_rate" directive did not allow to use full - throughput, even if limit value was very high. - - -Changes with nginx 0.6.17 15 Nov 2007 - - *) Feature: the "If-Range" request header line support. - Thanks to Alexander V. Inyukhin. - - *) Bugfix: URL double escaping in a redirect of the "msie_refresh" - directive; the bug had appeared in 0.6.4. - - *) Bugfix: the "autoindex" directive did not work with the "alias /" - directive. - - *) Bugfix: a segmentation fault might occur in worker process if - subrequests were used. - - *) Bugfix: the big responses may be transferred truncated if SSL and - gzip were used. - - *) Bugfix: the $status variable was equal to 0 if a proxied server - returned response in HTTP/0.9 version. - - -Changes with nginx 0.6.16 29 Oct 2007 - - *) Change: now the uname(2) is used on Linux instead of procfs. - Thanks to Ilya Novikov. - - *) Bugfix: if the "?" character was in a "error_page" directive, then it - was escaped in a proxied request; the bug had appeared in 0.6.11. - - *) Bugfix: compatibility with mget. - - -Changes with nginx 0.6.15 22 Oct 2007 - - *) Feature: Cygwin compatibility. - Thanks to Vladimir Kutakov. - - *) Feature: the "merge_slashes" directive. - - *) Feature: the "gzip_vary" directive. - - *) Feature: the "server_tokens" directive. - - *) Bugfix: nginx did not unescape URI in the "include" SSI command. - - *) Bugfix: the segmentation fault was occurred on start or while - reconfiguration if variable was used in the "charset" or - "source_charset" directives. - - *) Bugfix: nginx returned the 400 response on requests like - "GET http://www.domain.com HTTP/1.0". - Thanks to James Oakley. - - *) Bugfix: if request with request body was redirected using the - "error_page" directive, then nginx tried to read the request body - again; the bug had appeared in 0.6.7. - - *) Bugfix: a segmentation fault occurred in worker process if no - server_name was explicitly defined for server processing request; the - bug had appeared in 0.6.7. - - -Changes with nginx 0.6.14 15 Oct 2007 - - *) Change: now by default the "echo" SSI command uses entity encoding. - - *) Feature: the "encoding" parameter in the "echo" SSI command. - - *) Feature: the "access_log" directive may be used inside the - "limit_except" block. - - *) Bugfix: if all upstream servers were failed, then all servers had got - weight the was equal one until servers became alive; the bug had - appeared in 0.6.6. - - *) Bugfix: a segmentation fault occurred in worker process if - $date_local and $date_gmt were used outside the - ngx_http_ssi_filter_module. - - *) Bugfix: a segmentation fault might occur in worker process if debug - log was enabled. - Thanks to Andrei Nigmatulin. - - *) Bugfix: ngx_http_memcached_module did not set - $upstream_response_time. - Thanks to Maxim Dounin. - - *) Bugfix: a worker process may got caught in an endless loop, if the - memcached was used. - - *) Bugfix: nginx supported low case only "close" and "keep-alive" values - in the "Connection" request header line; the bug had appeared in - 0.6.11. - - *) Bugfix: sub_filter did not work with empty substitution. - - *) Bugfix: in sub_filter parsing. - - -Changes with nginx 0.6.13 24 Sep 2007 - - *) Bugfix: nginx did not close directory file on HEAD request if - autoindex was used. - Thanks to Arkadiusz Patyk. - - -Changes with nginx 0.6.12 21 Sep 2007 - - *) Change: mail proxy was split on three modules: pop3, imap and smtp. - - *) Feature: the --without-mail_pop3_module, --without-mail_imap_module, - and --without-mail_smtp_module configuration parameters. - - *) Feature: the "smtp_greeting_delay" and "smtp_client_buffer" - directives of the ngx_mail_smtp_module. - - *) Bugfix: the trailing wildcards did not work; the bug had appeared in - 0.6.9. - - *) Bugfix: nginx could not start on Solaris if the shared PCRE library - located in non-standard place was used. - - *) Bugfix: the "proxy_hide_header" and "fastcgi_hide_header" directives - did not hide response header lines whose name was longer than 32 - characters. - Thanks to Manlio Perillo. - - -Changes with nginx 0.6.11 11 Sep 2007 - - *) Bugfix: active connection counter always increased if mail proxy was - used. - - *) Bugfix: if backend returned response header only using non-buffered - proxy, then nginx closed backend connection on timeout. - - *) Bugfix: nginx did not support several "Connection" request header - lines. - - *) Bugfix: if the "max_fails" was set for upstream server, then after - first failure server weight was always one; the bug had appeared in - 0.6.6. - - -Changes with nginx 0.6.10 03 Sep 2007 - - *) Feature: the "open_file_cache", "open_file_cache_retest", and - "open_file_cache_errors" directives. - - *) Bugfix: socket leak; the bug had appeared in 0.6.7. - - *) Bugfix: a charset set by the "charset" directive was not appended to - the "Content-Type" header set by $r->send_http_header(). - - *) Bugfix: a segmentation fault might occur in worker process if - /dev/poll method was used. - - -Changes with nginx 0.6.9 28 Aug 2007 - - *) Bugfix: a worker process may got caught in an endless loop, if the - HTTPS protocol was used; the bug had appeared in 0.6.7. - - *) Bugfix: if server listened on two addresses or ports and trailing - wildcard was used, then nginx did not run. - - *) Bugfix: the "ip_hash" directive might incorrectly mark servers as - down. - - *) Bugfix: nginx could not be built on amd64; the bug had appeared in - 0.6.8. - - -Changes with nginx 0.6.8 20 Aug 2007 - - *) Change: now nginx tries to set the "worker_priority", - "worker_rlimit_nofile", "worker_rlimit_core", and - "worker_rlimit_sigpending" without super-user privileges. - - *) Change: now nginx escapes space and "%" in request to a mail proxy - authentication server. - - *) Change: now nginx escapes "%" in $memcached_key variable. - - *) Bugfix: nginx used path relative to configuration prefix for - non-absolute configuration file path specified in the "-c" key; the - bug had appeared in 0.6.6. - - *) Bugfix: nginx did not work on FreeBSD/sparc64. - - -Changes with nginx 0.6.7 15 Aug 2007 - - *) Change: now the paths specified in the "include", - "auth_basic_user_file", "perl_modules", "ssl_certificate", - "ssl_certificate_key", and "ssl_client_certificate" directives are - relative to directory of nginx configuration file nginx.conf, but not - to nginx prefix directory. - - *) Change: the --sysconfdir=PATH option in configure was canceled. - - *) Change: the special make target "upgrade1" was defined for online - upgrade of 0.1.x versions. - - *) Feature: the "server_name" and "valid_referers" directives support - regular expressions. - - *) Feature: the "server" directive in the "upstream" context supports - the "backup" parameter. - - *) Feature: the ngx_http_perl_module supports the - $r->discard_request_body. - - *) Feature: the "add_header Last-Modified ..." directive changes the - "Last-Modified" response header line. - - *) Bugfix: if a response different than 200 was returned to a request - with body and connection went to the keep-alive state after the - request, then nginx returned 400 for the next request. - - *) Bugfix: a segmentation fault occurred in worker process if invalid - address was set in the "auth_http" directive. - - *) Bugfix: now nginx uses default listen backlog value 511 on all - platforms except FreeBSD. - Thanks to Jiang Hong. - - *) Bugfix: a worker process may got caught in an endless loop, if a - "server" inside "upstream" block was marked as "down"; the bug had - appeared in 0.6.6. - - *) Bugfix: now Solaris sendfilev() is not used to transfer the client - request body to FastCGI-server via the unix domain socket. - - -Changes with nginx 0.6.6 30 Jul 2007 - - *) Feature: the --sysconfdir=PATH option in configure. - - *) Feature: named locations. - - *) Feature: the $args variable can be set with the "set" directive. - - *) Feature: the $is_args variable. - - *) Bugfix: fair big weight upstream balancer. - - *) Bugfix: if a client has closed connection to mail proxy then nginx - might not close connection to backend. - - *) Bugfix: if the same host without specified port was used as backend - for HTTP and HTTPS, then nginx used only one port - 80 or 443. - - *) Bugfix: fix building on Solaris/amd64 by Sun Studio 11 and early - versions; the bug had appeared in 0.6.4. - - -Changes with nginx 0.6.5 23 Jul 2007 - - *) Feature: $nginx_version variable. - Thanks to Nick S. Grechukh. - - *) Feature: the mail proxy supports AUTHENTICATE in IMAP mode. - Thanks to Maxim Dounin. - - *) Feature: the mail proxy supports STARTTLS in SMTP mode. - Thanks to Maxim Dounin. - - *) Bugfix: now nginx escapes space in $memcached_key variable. - - *) Bugfix: nginx was incorrectly built by Sun Studio on Solaris/amd64. - Thanks to Jiang Hong. - - *) Bugfix: of minor potential bugs. - Thanks to Coverity's Scan. - - -Changes with nginx 0.6.4 17 Jul 2007 - - *) Security: the "msie_refresh" directive allowed XSS. - Thanks to Maxim Boguk. - - *) Change: the "proxy_store" and "fastcgi_store" directives were - changed. - - *) Feature: the "proxy_store_access" and "fastcgi_store_access" - directives. - - *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun - Studio. - Thanks to Andrei Nigmatulin. - - *) Workaround: for Sun Studio 12. - Thanks to Jiang Hong. - - -Changes with nginx 0.6.3 12 Jul 2007 - - *) Feature: the "proxy_store" and "fastcgi_store" directives. - - *) Bugfix: a segmentation fault might occur in worker process if the - "auth_http_header" directive was used. - Thanks to Maxim Dounin. - - *) Bugfix: a segmentation fault occurred in worker process if the - CRAM-MD5 authentication method was used, but it was not enabled. - - *) Bugfix: a segmentation fault might occur in worker process when the - HTTPS protocol was used in the "proxy_pass" directive. - - *) Bugfix: a segmentation fault might occur in worker process if the - eventport method was used. - - *) Bugfix: the "proxy_ignore_client_abort" and - "fastcgi_ignore_client_abort" directives did not work; the bug had - appeared in 0.5.13. - - -Changes with nginx 0.6.2 09 Jul 2007 - - *) Bugfix: if the FastCGI header was split in records, then nginx passed - garbage in the header to a client. - - -Changes with nginx 0.6.1 17 Jun 2007 - - *) Bugfix: in SSI parsing. - - *) Bugfix: if remote SSI subrequest was used, then posterior local file - subrequest might transferred to client in wrong order. - - *) Bugfix: large SSI inclusions buffered in temporary files were - truncated. - - *) Bugfix: the perl $$ variable value in ngx_http_perl_module was equal - to the master process identification number. - - -Changes with nginx 0.6.0 14 Jun 2007 - - *) Feature: the "server_name", "map", and "valid_referers" directives - support the "www.example.*" wildcards. - - -Changes with nginx 0.5.25 11 Jun 2007 - - *) Bugfix: nginx could not be built with the - --without-http_rewrite_module parameter; the bug had appeared in - 0.5.24. - - -Changes with nginx 0.5.24 06 Jun 2007 - - *) Security: the "ssl_verify_client" directive did not work if request - was made using HTTP/0.9. - - *) Bugfix: a part of response body might be passed uncompressed if gzip - was used; the bug had appeared in 0.5.23. - - -Changes with nginx 0.5.23 04 Jun 2007 - - *) Feature: the ngx_http_ssl_module supports Server Name Indication TLS - extension. - - *) Feature: the "fastcgi_catch_stderr" directive. - Thanks to Nick S. Grechukh, OWOX project. - - *) Bugfix: a segmentation fault occurred in master process if two - virtual servers should bind() to the overlapping ports. - - *) Bugfix: if nginx was built with ngx_http_perl_module and perl - supported threads, then during second reconfiguration the error - messages "panic: MUTEX_LOCK" and "perl_parse() failed" were issued. - - *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive. - - -Changes with nginx 0.5.22 29 May 2007 - - *) Bugfix: a big request body might not be passed to backend; the bug - had appeared in 0.5.21. - - -Changes with nginx 0.5.21 28 May 2007 - - *) Bugfix: if server has more than about ten locations, then regex - locations might be chosen not in that order as they were specified. - - *) Bugfix: a worker process may got caught in an endless loop on 64-bit - platform, if the 33-rd or next in succession backend has failed. - Thanks to Anton Povarov. - - *) Bugfix: a bus error might occur on Solaris/sparc64 if the PCRE - library was used. - Thanks to Andrei Nigmatulin. - - *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive. - - -Changes with nginx 0.5.20 07 May 2007 - - *) Feature: the "sendfile_max_chunk" directive. - - *) Feature: the "$http_...", "$sent_http_...", and "$upstream_http_..." - variables may be changed using the "set" directive. - - *) Bugfix: a segmentation fault might occur in worker process if the SSI - command 'if expr="$var = /"' was used. - - *) Bugfix: trailing boundary of multipart range response was transferred - incorrectly. - Thanks to Evan Miller. - - *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun - Studio. - Thanks to Andrei Nigmatulin. - - *) Bugfix: the ngx_http_perl_module could not be built by Solaris make. - Thanks to Andrei Nigmatulin. - - -Changes with nginx 0.5.19 24 Apr 2007 - - *) Change: now the $request_time variable has millisecond precision. - - *) Change: the method $r->rflush of ngx_http_perl_module was renamed to - the $r->flush. - - *) Feature: the $upstream_addr variable. - - *) Feature: the "proxy_headers_hash_max_size" and - "proxy_headers_hash_bucket_size" directives. - Thanks to Volodymyr Kostyrko. - - *) Bugfix: the files more than 2G could not be transferred using - sendfile and limit_rate on 64-bit platforms. - - *) Bugfix: the files more than 2G could not be transferred using - sendfile on 64-bit Linux. - - -Changes with nginx 0.5.18 19 Apr 2007 - - *) Feature: the ngx_http_sub_filter_module. - - *) Feature: the "$upstream_http_..." variables. - - *) Feature: now the $upstream_status and $upstream_response_time - variables keep data about all upstreams before X-Accel-Redirect. - - *) Bugfix: a segmentation fault occurred in master process after first - reconfiguration and receiving any signal if nginx was built with - ngx_http_perl_module and perl did not support multiplicity; the bug - had appeared in 0.5.9. - - *) Bugfix: if perl did not support multiplicity, then after - reconfiguration perl code did not work; the bug had appeared in - 0.3.38. - - -Changes with nginx 0.5.17 02 Apr 2007 - - *) Change: now nginx always returns the 405 status for the TRACE method. - - *) Feature: now nginx supports the "include" directive inside the - "types" block. - - *) Bugfix: the $document_root variable usage in the "root" and "alias" - directives is disabled: this caused recursive stack overflow. - - *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive. - - *) Bugfix: in some cases non-cacheable variables (such as $uri variable) - returned old cached value. - - -Changes with nginx 0.5.16 26 Mar 2007 - - *) Bugfix: the C-class network was not used as hash key in the "ip_hash" - directive. - Thanks to Pavel Yarkovoy. - - *) Bugfix: a segmentation fault might occur in worker process if a - charset was set in the "Content-Type" header line and the line has - trailing ";"; the bug had appeared in 0.3.50. - - *) Bugfix: the "[alert] zero size buf" error when FastCGI server was - used and a request body written in a temporary file was multiple of - 32K. - - *) Bugfix: nginx could not be built on Solaris without the --with-debug - option; the bug had appeared in 0.5.15. - - -Changes with nginx 0.5.15 19 Mar 2007 - - *) Feature: the mail proxy supports authenticated SMTP proxying and the - "smtp_auth", "smtp_capabilities", and "xclient" directives. - Thanks to Anton Yuzhaninov and Maxim Dounin. - - *) Feature: now the keep-alive connections are closed just after - receiving the reconfiguration signal. - - *) Change: the "imap" and "auth" directives were renamed to the "mail" - and "pop3_auth" directives. - - *) Bugfix: a segmentation fault occurred in worker process if the - CRAM-MD5 authentication method was used and the APOP method was - disabled. - - *) Bugfix: if the "starttls only" directive was used in POP3 protocol, - then nginx allowed authentication without switching to the SSL mode. - - *) Bugfix: worker processes did not exit after reconfiguration and did - not rotate logs if the eventport method was used. - - *) Bugfix: a worker process may got caught in an endless loop, if the - "ip_hash" directive was used. - - *) Bugfix: now nginx does not log some alerts if eventport or /dev/poll - methods are used. - - -Changes with nginx 0.5.14 23 Feb 2007 - - *) Bugfix: nginx ignored superfluous closing "}" in the end of - configuration file. - - -Changes with nginx 0.5.13 19 Feb 2007 - - *) Feature: the COPY and MOVE methods. - - *) Bugfix: the ngx_http_realip_module set garbage for requests passed - via keep-alive connection. - - *) Bugfix: nginx did not work on big-endian 64-bit Linux. - Thanks to Andrei Nigmatulin. - - *) Bugfix: now when IMAP/POP3 proxy receives too long command it closes - the connection right away, but not after timeout. - - *) Bugfix: if the "epoll" method was used and a client closed a - connection prematurely, then nginx closed the connection after a send - timeout only. - - *) Bugfix: nginx could not be built on platforms different from i386, - amd64, sparc, and ppc; the bug had appeared in 0.5.8. - - -Changes with nginx 0.5.12 12 Feb 2007 - - *) Bugfix: nginx could not be built on platforms different from i386, - amd64, sparc, and ppc; the bug had appeared in 0.5.8. - - *) Bugfix: a segmentation fault might occur in worker process if the - temporary files were used while working with FastCGI server; the bug - had appeared in 0.5.8. - - *) Bugfix: a segmentation fault might occur in worker process if the - $fastcgi_script_name variable was logged. - - *) Bugfix: ngx_http_perl_module could not be built on Solaris. - - -Changes with nginx 0.5.11 05 Feb 2007 - - *) Feature: now configure detects system PCRE library in MacPorts. - Thanks to Chris McGrath. - - *) Bugfix: the response was incorrect if several ranges were requested; - the bug had appeared in 0.5.6. - - *) Bugfix: the "create_full_put_path" directive could not create the - intermediate directories if no "dav_access" directive was set. - Thanks to Evan Miller. - - *) Bugfix: the "0" response code might be logged in the access_log - instead of the "400" and "408" error codes. - - *) Bugfix: a segmentation fault might occur in worker process if nginx - was built with -O2 optimization. - - -Changes with nginx 0.5.10 26 Jan 2007 - - *) Bugfix: while online executable file upgrade the new master process - did not inherit the listening sockets; the bug had appeared in 0.5.9. - - *) Bugfix: a segmentation fault might occur in worker process if nginx - was built with -O2 optimization; the bug had appeared in 0.5.1. - - -Changes with nginx 0.5.9 25 Jan 2007 - - *) Change: now the ngx_http_memcached_module uses the $memcached_key - variable value as a key. - - *) Feature: the $memcached_key variable. - - *) Feature: the "clean" parameter in the "client_body_in_file_only" - directive. - - *) Feature: the "env" directive. - - *) Feature: the "sendfile" directive is available inside the "if" block. - - *) Feature: now on failure of the writing to access nginx logs a message - to error_log, but not more often than once a minute. - - *) Bugfix: the "access_log off" directive did not always turn off the - logging. - - -Changes with nginx 0.5.8 19 Jan 2007 - - *) Bugfix: a segmentation fault might occur if - "client_body_in_file_only on" was used and a request body was small. - - *) Bugfix: a segmentation fault occurred if - "client_body_in_file_only on" and "proxy_pass_request_body off" or - "fastcgi_pass_request_body off" directives were used, and nginx - switched to a next upstream. - - *) Bugfix: if the "proxy_buffering off" directive was used and a client - connection was non-active, then the connection was closed after send - timeout; the bug had appeared in 0.4.7. - - *) Bugfix: if the "epoll" method was used and a client closed a - connection prematurely, then nginx closed the connection after a send - timeout only. - - *) Bugfix: the "[alert] zero size buf" error when FastCGI server was - used. - - *) Bugfixes in the "limit_zone" directive. - - -Changes with nginx 0.5.7 15 Jan 2007 - - *) Feature: the ssl_session_cache storage optimization. - - *) Bugfixes in the "ssl_session_cache" and "limit_zone" directives. - - *) Bugfix: the segmentation fault was occurred on start or while - reconfiguration if the "ssl_session_cache" or "limit_zone" directives - were used on 64-bit platforms. - - *) Bugfix: a segmentation fault occurred if the "add_before_body" or - "add_after_body" directives were used and there was no "Content-Type" - header line in response. - - *) Bugfix: the OpenSSL library was always built with the threads - support. - Thanks to Den Ivanov. - - *) Bugfix: the PCRE-6.5+ library and the icc compiler compatibility. - - -Changes with nginx 0.5.6 09 Jan 2007 - - *) Change: now the ngx_http_index_module ignores all methods except the - GET, HEAD, and POST methods. - - *) Feature: the ngx_http_limit_zone_module. - - *) Feature: the $binary_remote_addr variable. - - *) Feature: the "ssl_session_cache" directives of the - ngx_http_ssl_module and ngx_imap_ssl_module. - - *) Feature: the DELETE method supports recursive removal. - - *) Bugfix: the byte-ranges were transferred incorrectly if the - $r->sendfile() was used. - - -Changes with nginx 0.5.5 24 Dec 2006 - - *) Change: the -v switch does not show compiler information any more. - - *) Feature: the -V switch. - - *) Feature: the "worker_rlimit_core" directive supports size in K, M, - and G. - - *) Bugfix: the nginx.pm module now could be installed by an unprivileged - user. - - *) Bugfix: a segmentation fault might occur if the $r->request_body or - $r->request_body_file methods were used. - - *) Bugfix: the ppc platform specific bugs. - - -Changes with nginx 0.5.4 15 Dec 2006 - - *) Feature: the "perl" directive may be used inside the "limit_except" - block. - - *) Bugfix: the ngx_http_dav_module required the "Date" request header - line for the DELETE method. - - *) Bugfix: if one only parameter was used in the "dav_access" directive, - then nginx might report about configuration error. - - *) Bugfix: a segmentation fault might occur if the $host variable was - used; the bug had appeared in 0.4.14. - - -Changes with nginx 0.5.3 13 Dec 2006 - - *) Feature: the ngx_http_perl_module supports the $r->status, - $r->log_error, and $r->sleep methods. - - *) Feature: the $r->variable method supports variables that do not exist - in nginx configuration. - - *) Bugfix: the $r->has_request_body method did not work. - - -Changes with nginx 0.5.2 11 Dec 2006 - - *) Bugfix: if the "proxy_pass" directive used the name of the "upstream" - block, then nginx tried to resolve the name; the bug had appeared in - 0.5.1. - - -Changes with nginx 0.5.1 11 Dec 2006 - - *) Bugfix: the "post_action" directive might not run after a - unsuccessful completion of a request. - - *) Workaround: for Eudora for Mac; the bug had appeared in 0.4.11. - Thanks to Bron Gondwana. - - *) Bugfix: if the "upstream" name was used in the "fastcgi_pass", then - the message "no port in upstream" was issued; the bug had appeared in - 0.5.0. - - *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the - same servers but different ports, then these directives uses the - first described port; the bug had appeared in 0.5.0. - - *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the - unix domain sockets, then these directives used first described - socket; the bug had appeared in 0.5.0. - - *) Bugfix: ngx_http_auth_basic_module ignored the user if it was in the - last line in the password file and there was no the carriage return, - the line feed, or the ":" symbol after the password. - - *) Bugfix: the $upstream_response_time variable might be equal to - "0.000", although response time was more than 1 millisecond. - - -Changes with nginx 0.5.0 04 Dec 2006 - - *) Change: the parameters in the "%name" form in the "log_format" - directive are not supported anymore. - - *) Change: the "proxy_upstream_max_fails", - "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", - "fastcgi_upstream_fail_timeout", "memcached_upstream_max_fails", and - "memcached_upstream_fail_timeout" directives are not supported - anymore. - - *) Feature: the "server" directive in the "upstream" context supports - the "max_fails", "fail_timeout", and "down" parameters. - - *) Feature: the "ip_hash" directive inside the "upstream" block. - - *) Feature: the WAIT status in the "Auth-Status" header line of the - IMAP/POP3 proxy authentication server response. - - *) Bugfix: nginx could not be built on 64-bit platforms; the bug had - appeared in 0.4.14. - - -Changes with nginx 0.4.14 27 Nov 2006 - - *) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy. - - *) Feature: now configure detects system PCRE library on FreeBSD, Linux, - and NetBSD. - - *) Bugfix: ngx_http_perl_module did not work with perl built with the - threads support; the bug had appeared in 0.3.38. - - *) Bugfix: ngx_http_perl_module did not work if perl was called - recursively. - - *) Bugfix: nginx ignored a host name in a request line. - - *) Bugfix: a worker process may got caught in an endless loop, if a - FastCGI server sent too many data to the stderr. - - *) Bugfix: the $upstream_response_time variable may be negative if the - system time was changed backward. - - *) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3 - proxy authentication server when POP3 was used. - - *) Bugfix: a segmentation fault might occur if connect to IMAP/POP3 - proxy authentication server failed. - - -Changes with nginx 0.4.13 15 Nov 2006 - - *) Feature: the "proxy_pass" directive may be used inside the - "limit_except" block. - - *) Feature: the "limit_except" directive supports all WebDAV methods. - - *) Bugfix: if the "add_before_body" directive was used without the - "add_after_body" directive, then a response did not transferred - complete. - - *) Bugfix: a large request body did not receive if the epoll method and - the deferred accept() were used. - - *) Bugfix: a charset could not be set for ngx_http_autoindex_module - responses; the bug had appeared in 0.3.50. - - *) Bugfix: the "[alert] zero size buf" error when FastCGI server was - used; - - *) Bugfix: the --group= configuration parameter was ignored. - Thanks to Thomas Moschny. - - *) Bugfix: the 50th subrequest in SSI response did not work; the bug had - appeared in 0.3.50. - - -Changes with nginx 0.4.12 31 Oct 2006 - - *) Feature: the ngx_http_perl_module supports the $r->variable method. - - *) Bugfix: if a big static file was included using SSI in a response, - then the response may be transferred incomplete. - - *) Bugfix: nginx did not omit the "#fragment" part in URI. - - -Changes with nginx 0.4.11 25 Oct 2006 - - *) Feature: the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5. - - *) Feature: the ngx_http_perl_module supports the $r->allow_ranges - method. - - *) Bugfix: if the APOP was enabled in the POP3 proxy, then the USER/PASS - commands might not work; the bug had appeared in 0.4.10. - - -Changes with nginx 0.4.10 23 Oct 2006 - - *) Feature: the POP3 proxy supports the APOP command. - - *) Bugfix: if the select, poll or /dev/poll methods were used, then - while waiting authentication server response the IMAP/POP3 proxy - hogged CPU. - - *) Bugfix: a segmentation fault might occur if the $server_addr variable - was used in the "map" directive. - - *) Bugfix: the ngx_http_flv_module did not support the byte ranges for - full responses; the bug had appeared in 0.4.7. - - *) Bugfix: nginx could not be built on Debian amd64; the bug had - appeared in 0.4.9. - - -Changes with nginx 0.4.9 13 Oct 2006 - - *) Feature: the "set" parameter in the "include" SSI command. - - *) Feature: the ngx_http_perl_module now tests the nginx.pm module - version. - - -Changes with nginx 0.4.8 11 Oct 2006 - - *) Bugfix: if an "include" SSI command were before another "include" SSI - command with a "wait" parameter, then the "wait" parameter might not - work. - - *) Bugfix: the ngx_http_flv_module added the FLV header to the full - responses. - Thanks to Alexey Kovyrin. - - -Changes with nginx 0.4.7 10 Oct 2006 - - *) Feature: the ngx_http_flv_module. - - *) Feature: the $request_body_file variable. - - *) Feature: the "charset" and "source_charset" directives support the - variables. - - *) Bugfix: if an "include" SSI command were before another "include" SSI - command with a "wait" parameter, then the "wait" parameter might not - work. - - *) Bugfix: if the "proxy_buffering off" directive was used or while - working with memcached the connections might not be closed on - timeout. - - *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64, - and ppc64. - - -Changes with nginx 0.4.6 06 Oct 2006 - - *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64, - and ppc64. - - *) Bugfix: nginx sent the chunked response for HTTP/1.1 request, - if its length was set by text string in the - $r->headers_out("Content-Length", ...) method. - - *) Bugfix: after redirecting error by an "error_page" directive any - ngx_http_rewrite_module directive returned this error code; the bug - had appeared in 0.4.4. - - -Changes with nginx 0.4.5 02 Oct 2006 - - *) Bugfix: nginx could not be built on Linux and Solaris; the bug had - appeared in 0.4.4. - - -Changes with nginx 0.4.4 02 Oct 2006 - - *) Feature: the $scheme variable. - - *) Feature: the "expires" directive supports the "max" parameter. - - *) Feature: the "include" directive supports the "*" mask. - Thanks to Jonathan Dance. - - *) Bugfix: the "return" directive always overrode the "error_page" - response code redirected by the "error_page" directive. - - *) Bugfix: a segmentation fault occurred if zero-length body was in PUT - method. - - *) Bugfix: the redirect was changed incorrectly if the variables were - used in the "proxy_redirect" directive. - - -Changes with nginx 0.4.3 26 Sep 2006 - - *) Change: now the 499 error could not be redirected using an - "error_page" directive. - - *) Feature: the Solaris 10 event ports support. - - *) Feature: the ngx_http_browser_module. - - *) Bugfix: a segmentation fault may occur while redirecting the 400 - error to the proxied server using a "proxy_pass" directive. - - *) Bugfix: a segmentation fault occurred if an unix domain socket was - used in a "proxy_pass" directive; the bug had appeared in 0.3.47. - - *) Bugfix: SSI did work with memcached and nonbuffered responses. - - *) Workaround: of the Sun Studio PAUSE hardware capability bug. - - -Changes with nginx 0.4.2 14 Sep 2006 - - *) Bugfix: the O_NOATIME flag support on Linux was canceled; the bug had - appeared in 0.4.1. - - -Changes with nginx 0.4.1 14 Sep 2006 - - *) Bugfix: the DragonFlyBSD compatibility. - Thanks to Pavel Nazarov. - - *) Workaround: of bug in 64-bit Linux sendfile(), when file is more than - 2G. - - *) Feature: now on Linux nginx uses O_NOATIME flag for static requests. - Thanks to Yusuf Goolamabbas. - - -Changes with nginx 0.4.0 30 Aug 2006 - - *) Change in internal API: the HTTP modules initialization was moved - from the init module phase to the HTTP postconfiguration phase. - - *) Change: now the request body is not read beforehand for the - ngx_http_perl_module: it's required to start the reading using the - $r->has_request_body method. - - *) Feature: the ngx_http_perl_module supports the DECLINED return code. - - *) Feature: the ngx_http_dav_module supports the incoming "Date" header - line for the PUT method. - - *) Feature: the "ssi" directive is available inside the "if" block. - - *) Bugfix: a segmentation fault occurred if there was an "index" - directive with variables and the first index name was without - variables; the bug had appeared in 0.1.29. - - -Changes with nginx 0.3.61 28 Aug 2006 - - *) Change: now the "tcp_nodelay" directive is turned on by default. - - *) Feature: the "msie_refresh" directive. - - *) Feature: the "recursive_error_pages" directive. - - *) Bugfix: the "rewrite" directive returned incorrect redirect, if the - redirect had the captured escaped symbols from original URI. - - -Changes with nginx 0.3.60 18 Aug 2006 - - *) Bugfix: a worker process may got caught in an endless loop while an - error redirection; the bug had appeared in 0.3.59. - - -Changes with nginx 0.3.59 16 Aug 2006 - - *) Feature: now is possible to do several redirection using the - "error_page" directive. - - *) Bugfix: the "dav_access" directive did not support three parameters. - - *) Bugfix: the "error_page" directive did not changes the "Content-Type" - header line after the "X-Accel-Redirect" was used; the bug had - appeared in 0.3.58. - - -Changes with nginx 0.3.58 14 Aug 2006 - - *) Feature: the "error_page" directive supports the variables. - - *) Change: now the procfs interface instead of sysctl is used on Linux. - - *) Change: now the "Content-Type" header line is inherited from first - response when the "X-Accel-Redirect" was used. - - *) Bugfix: the "error_page" directive did not redirect the 413 error. - - *) Bugfix: the trailing "?" did not remove old arguments if no new - arguments were added to a rewritten URI. - - *) Bugfix: nginx could not run on 64-bit FreeBSD 7.0-CURRENT. - - -Changes with nginx 0.3.57 09 Aug 2006 - - *) Feature: the $ssl_client_serial variable. - - *) Bugfix: in the "!-e" operator of the "if" directive. - Thanks to Andrian Budanstov. - - *) Bugfix: while a client certificate verification nginx did not send to - a client the required certificates information. - - *) Bugfix: the $document_root variable did not support the variables in - the "root" directive. - - -Changes with nginx 0.3.56 04 Aug 2006 - - *) Feature: the "dav_access" directive. - - *) Feature: the "if" directive supports the "-d", "!-d", "-e", "!-e", - "-x", and "!-x" operators. - - *) Bugfix: a segmentation fault occurred if a request returned a - redirect and some sent to client header lines were logged in the - access log. - - -Changes with nginx 0.3.55 28 Jul 2006 - - *) Feature: the "stub" parameter in the "include" SSI command. - - *) Feature: the "block" SSI command. - - *) Feature: the unicode2nginx script was added to contrib. - - *) Bugfix: if a "root" was specified by variable only, then the root was - relative to a server prefix. - - *) Bugfix: if the request contained "//" or "/./" and escaped symbols - after them, then the proxied request was sent unescaped. - - *) Bugfix: the $r->header_in("Cookie") of the ngx_http_perl_module now - returns all "Cookie" header lines. - - *) Bugfix: a segmentation fault occurred if - "client_body_in_file_only on" was used and nginx switched to a next - upstream. - - *) Bugfix: on some condition while reconfiguration character codes - inside the "charset_map" may be treated invalid; the bug had appeared - in 0.3.50. - - -Changes with nginx 0.3.54 11 Jul 2006 - - *) Feature: nginx now logs the subrequest information to the error log. - - *) Feature: the "proxy_next_upstream", "fastcgi_next_upstream", and - "memcached_next_upstream" directives support the "off" parameter. - - *) Feature: the "debug_connection" directive supports the CIDR address - form. - - *) Bugfix: if a response of proxied server or FastCGI server was - converted from UTF-8 or back, then it may be transferred incomplete. - - *) Bugfix: the $upstream_response_time variable had the time of the - first request to a backend only. - - *) Bugfix: nginx could not be built on amd64 platform; the bug had - appeared in 0.3.53. - - -Changes with nginx 0.3.53 07 Jul 2006 - - *) Change: the "add_header" directive adds the string to 204, 301, and - 302 responses. - - *) Feature: the "server" directive in the "upstream" context supports - the "weight" parameter. - - *) Feature: the "server_name" directive supports the "*" wildcard. - - *) Feature: nginx supports the request body size more than 2G. - - *) Bugfix: if a client was successfully authorized using "satisfy_any - on", then anyway the message "access forbidden by rule" was written - in the log. - - *) Bugfix: the "PUT" method may erroneously not create a file and return - the 409 code. - - *) Bugfix: if the IMAP/POP3 backend returned an error, then nginx - continued proxying anyway. - - -Changes with nginx 0.3.52 03 Jul 2006 - - *) Change: the ngx_http_index_module behavior for the "POST /" requests - is reverted to the 0.3.40 version state: the module now does not - return the 405 error. - - *) Bugfix: the worker process may got caught in an endless loop if the - limit rate was used; the bug had appeared in 0.3.37. - - *) Bugfix: ngx_http_charset_module logged "unknown charset" alert, even - if the recoding was not needed; the bug had appeared in 0.3.50. - - *) Bugfix: if a code response of the PUT request was 409, then a - temporary file was not removed. - - -Changes with nginx 0.3.51 30 Jun 2006 - - *) Bugfix: the "<" symbols might disappeared some conditions in the SSI; - the bug had appeared in 0.3.50. - - -Changes with nginx 0.3.50 28 Jun 2006 - - *) Change: the "proxy_redirect_errors" and "fastcgi_redirect_errors" - directives was renamed to the "proxy_intercept_errors" and - "fastcgi_intercept_errors" directives. - - *) Feature: the ngx_http_charset_module supports the recoding from the - single byte encodings to the UTF-8 encoding and back. - - *) Feature: the "X-Accel-Charset" response header line is supported in - proxy and FastCGI mode. - - *) Bugfix: the "\" escape symbol in the "\"" and "\'" pairs in the SSI - command was removed only if the command also has the "$" symbol. - - *) Bugfix: the " - - com.hmdp - hm-dianping - 0.0.1-SNAPSHOT - hm-dianping - Demo project for Spring Boot - - 1.8 - - - - org.springframework.boot - spring-boot-starter-data-redis - - - org.apache.commons - commons-pool2 - - - org.springframework.boot - spring-boot-starter-web - - - - mysql - mysql-connector-java - runtime - 5.1.47 - - - org.projectlombok - lombok - true - - - org.springframework.boot - spring-boot-starter-test - test - - - com.baomidou - mybatis-plus-boot-starter - 3.4.3 - - - - cn.hutool - hutool-all - 5.7.17 - - - - org.aspectj - aspectjweaver - 1.9.7 - - - org.redisson - redisson - 3.22.1 - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - - - - - - diff --git a/src/main/java/com/hmdp/HmDianPingApplication.java b/src/main/java/com/hmdp/HmDianPingApplication.java deleted file mode 100644 index 5e9d293..0000000 --- a/src/main/java/com/hmdp/HmDianPingApplication.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.hmdp; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.EnableAspectJAutoProxy; - -// 让对象代理生效 -@EnableAspectJAutoProxy(exposeProxy = true) -@MapperScan("com.hmdp.mapper") -@SpringBootApplication -public class HmDianPingApplication { - - public static void main(String[] args) { - SpringApplication.run(HmDianPingApplication.class, args); - } - -} diff --git a/src/main/java/com/hmdp/config/MvcConfig.java b/src/main/java/com/hmdp/config/MvcConfig.java deleted file mode 100644 index 856ab05..0000000 --- a/src/main/java/com/hmdp/config/MvcConfig.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hmdp.config; - -import com.hmdp.utils.LoginInterceptor; -import com.hmdp.utils.RefreshTokenInterceptor; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import javax.annotation.Resource; - -@Configuration -public class MvcConfig implements WebMvcConfigurer { - @Resource - private StringRedisTemplate stringRedisTemplate; - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new LoginInterceptor()) - .excludePathPatterns( - "/shop/**", - "/voucher/**", - "/shop-type/**", - "/upload/**", - "/blog/hot", - "/user/code", - "/user/login" - ).order(1); - registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)) - .addPathPatterns("/**") - .order(0); - } -} diff --git a/src/main/java/com/hmdp/config/MybatisConfig.java b/src/main/java/com/hmdp/config/MybatisConfig.java deleted file mode 100644 index ffd08c4..0000000 --- a/src/main/java/com/hmdp/config/MybatisConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hmdp.config; - -import com.baomidou.mybatisplus.annotation.DbType; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class MybatisConfig { - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); - return interceptor; - } -} diff --git a/src/main/java/com/hmdp/config/RedissonConfig.java b/src/main/java/com/hmdp/config/RedissonConfig.java deleted file mode 100644 index e5b274f..0000000 --- a/src/main/java/com/hmdp/config/RedissonConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hmdp.config; - -import org.redisson.Redisson; -import org.redisson.api.RedissonClient; -import org.redisson.config.Config; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class RedissonConfig { - @Bean - public RedissonClient redissonClient() { - //1.创建配置 - Config config = new Config(); - config.useSingleServer().setAddress("redis://192.168.56.10:6379").setPassword("123456"); - //2.根据 Config 创建出 RedissonClient 实例 - return Redisson.create(config); - } -} diff --git a/src/main/java/com/hmdp/config/WebExceptionAdvice.java b/src/main/java/com/hmdp/config/WebExceptionAdvice.java deleted file mode 100644 index ae0da66..0000000 --- a/src/main/java/com/hmdp/config/WebExceptionAdvice.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hmdp.config; - -import com.hmdp.dto.Result; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -@Slf4j -@RestControllerAdvice -public class WebExceptionAdvice { - - @ExceptionHandler(RuntimeException.class) - public Result handleRuntimeException(RuntimeException e) { - log.error(e.toString(), e); - return Result.fail("服务器异常"); - } -} diff --git a/src/main/java/com/hmdp/controller/BlogCommentsController.java b/src/main/java/com/hmdp/controller/BlogCommentsController.java deleted file mode 100644 index 3408b71..0000000 --- a/src/main/java/com/hmdp/controller/BlogCommentsController.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RestController; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/blog-comments") -public class BlogCommentsController { - -} diff --git a/src/main/java/com/hmdp/controller/BlogController.java b/src/main/java/com/hmdp/controller/BlogController.java deleted file mode 100644 index 0a2fa6c..0000000 --- a/src/main/java/com/hmdp/controller/BlogController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.hmdp.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.hmdp.dto.Result; -import com.hmdp.dto.UserDTO; -import com.hmdp.entity.Blog; -import com.hmdp.entity.User; -import com.hmdp.service.IBlogService; -import com.hmdp.service.IUserService; -import com.hmdp.utils.SystemConstants; -import com.hmdp.utils.UserHolder; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.List; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/blog") -public class BlogController { - - @Resource - private IBlogService blogService; - @Resource - private IUserService userService; - - @PostMapping - public Result saveBlog(@RequestBody Blog blog) { - // 获取登录用户 - UserDTO user = UserHolder.getUser(); - blog.setUserId(user.getId()); - // 保存探店博文 - blogService.save(blog); - // 返回id - return Result.ok(blog.getId()); - } - - @PutMapping("/like/{id}") - public Result likeBlog(@PathVariable("id") Long id) { - // 修改点赞数量 - blogService.update() - .setSql("liked = liked + 1").eq("id", id).update(); - return Result.ok(); - } - - @GetMapping("/of/me") - public Result queryMyBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { - // 获取登录用户 - UserDTO user = UserHolder.getUser(); - // 根据用户查询 - Page page = blogService.query() - .eq("user_id", user.getId()).page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); - // 获取当前页数据 - List records = page.getRecords(); - return Result.ok(records); - } - - @GetMapping("/hot") - public Result queryHotBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { - // 根据用户查询 - Page page = blogService.query() - .orderByDesc("liked") - .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); - // 获取当前页数据 - List records = page.getRecords(); - // 查询用户 - records.forEach(blog ->{ - Long userId = blog.getUserId(); - User user = userService.getById(userId); - blog.setName(user.getNickName()); - blog.setIcon(user.getIcon()); - }); - return Result.ok(records); - } -} diff --git a/src/main/java/com/hmdp/controller/FollowController.java b/src/main/java/com/hmdp/controller/FollowController.java deleted file mode 100644 index b4d67f3..0000000 --- a/src/main/java/com/hmdp/controller/FollowController.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RestController; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/follow") -public class FollowController { - -} diff --git a/src/main/java/com/hmdp/controller/ShopController.java b/src/main/java/com/hmdp/controller/ShopController.java deleted file mode 100644 index 4a4158f..0000000 --- a/src/main/java/com/hmdp/controller/ShopController.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.hmdp.controller; - - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.hmdp.dto.Result; -import com.hmdp.entity.Shop; -import com.hmdp.service.IShopService; -import com.hmdp.utils.SystemConstants; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/shop") -public class ShopController { - - @Resource - public IShopService shopService; - - /** - * 根据id查询商铺信息 - * @param id 商铺id - * @return 商铺详情数据 - */ - @GetMapping("/{id}") - public Result queryShopById(@PathVariable("id") Long id) { -// return Result.ok(shopService.getById(id)); - return shopService.queryById(id); - } - - /** - * 新增商铺信息 - * @param shop 商铺数据 - * @return 商铺id - */ - @PostMapping - public Result saveShop(@RequestBody Shop shop) { - // 写入数据库 - shopService.save(shop); - // 返回店铺id - return Result.ok(shop.getId()); - } - - /** - * 更新商铺信息 - * @param shop 商铺数据 - * @return 无 - */ - @PutMapping - public Result updateShop(@RequestBody Shop shop) { - // 写入数据库 - - return shopService.updateShopById(shop); - } - - /** - * 根据商铺类型分页查询商铺信息 - * @param typeId 商铺类型 - * @param current 页码 - * @return 商铺列表 - */ - @GetMapping("/of/type") - public Result queryShopByType( - @RequestParam("typeId") Integer typeId, - @RequestParam(value = "current", defaultValue = "1") Integer current - ) { - // 根据类型分页查询 - Page page = shopService.query() - .eq("type_id", typeId) - .page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE)); - // 返回数据 - return Result.ok(page.getRecords()); - } - - /** - * 根据商铺名称关键字分页查询商铺信息 - * @param name 商铺名称关键字 - * @param current 页码 - * @return 商铺列表 - */ - @GetMapping("/of/name") - public Result queryShopByName( - @RequestParam(value = "name", required = false) String name, - @RequestParam(value = "current", defaultValue = "1") Integer current - ) { - // 根据类型分页查询 - Page page = shopService.query() - .like(StrUtil.isNotBlank(name), "name", name) - .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); - // 返回数据 - return Result.ok(page.getRecords()); - } -} diff --git a/src/main/java/com/hmdp/controller/ShopTypeController.java b/src/main/java/com/hmdp/controller/ShopTypeController.java deleted file mode 100644 index 7addf13..0000000 --- a/src/main/java/com/hmdp/controller/ShopTypeController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hmdp.controller; - - -import com.hmdp.dto.Result; -import com.hmdp.entity.ShopType; -import com.hmdp.service.IShopTypeService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/shop-type") -public class ShopTypeController { - @Resource - private IShopTypeService typeService; - - @GetMapping("list") - public Result queryTypeList() { -// List typeList = typeService -// .query().orderByAsc("sort").list(); -// return Result.ok(typeList); - return typeService.queryTypeList(); - } -} diff --git a/src/main/java/com/hmdp/controller/UploadController.java b/src/main/java/com/hmdp/controller/UploadController.java deleted file mode 100644 index 56d32e4..0000000 --- a/src/main/java/com/hmdp/controller/UploadController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.hmdp.controller; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.util.StrUtil; -import com.hmdp.dto.Result; -import com.hmdp.utils.SystemConstants; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -@Slf4j -@RestController -@RequestMapping("upload") -public class UploadController { - - @PostMapping("blog") - public Result uploadImage(@RequestParam("file") MultipartFile image) { - try { - // 获取原始文件名称 - String originalFilename = image.getOriginalFilename(); - // 生成新文件名 - String fileName = createNewFileName(originalFilename); - // 保存文件 - image.transferTo(new File(SystemConstants.IMAGE_UPLOAD_DIR, fileName)); - // 返回结果 - log.debug("文件上传成功,{}", fileName); - return Result.ok(fileName); - } catch (IOException e) { - throw new RuntimeException("文件上传失败", e); - } - } - - @GetMapping("/blog/delete") - public Result deleteBlogImg(@RequestParam("name") String filename) { - File file = new File(SystemConstants.IMAGE_UPLOAD_DIR, filename); - if (file.isDirectory()) { - return Result.fail("错误的文件名称"); - } - FileUtil.del(file); - return Result.ok(); - } - - private String createNewFileName(String originalFilename) { - // 获取后缀 - String suffix = StrUtil.subAfter(originalFilename, ".", true); - // 生成目录 - String name = UUID.randomUUID().toString(); - int hash = name.hashCode(); - int d1 = hash & 0xF; - int d2 = (hash >> 4) & 0xF; - // 判断目录是否存在 - File dir = new File(SystemConstants.IMAGE_UPLOAD_DIR, StrUtil.format("/blogs/{}/{}", d1, d2)); - if (!dir.exists()) { - dir.mkdirs(); - } - // 生成文件名 - return StrUtil.format("/blogs/{}/{}/{}.{}", d1, d2, name, suffix); - } -} diff --git a/src/main/java/com/hmdp/controller/UserController.java b/src/main/java/com/hmdp/controller/UserController.java deleted file mode 100644 index 2a0faf5..0000000 --- a/src/main/java/com/hmdp/controller/UserController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.hmdp.controller; - - -import cn.hutool.core.util.RandomUtil; -import com.hmdp.dto.LoginFormDTO; -import com.hmdp.dto.Result; -import com.hmdp.dto.UserDTO; -import com.hmdp.entity.User; -import com.hmdp.entity.UserInfo; -import com.hmdp.service.IUserInfoService; -import com.hmdp.service.IUserService; -import com.hmdp.utils.RegexUtils; -import com.hmdp.utils.UserHolder; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpSession; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Slf4j -@RestController -@RequestMapping("/user") -public class UserController { - - @Resource - private IUserService userService; - - @Resource - private IUserInfoService userInfoService; - - /** - * 发送手机验证码 - */ - @PostMapping("code") - public Result sendCode(@RequestParam("phone") String phone, HttpSession session) { - return userService.sendCode(phone, session); - } - - /** - * 登录功能 - * @param loginForm 登录参数,包含手机号、验证码;或者手机号、密码 - */ - @PostMapping("/login") - public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session){ - return userService.login(loginForm, session); - } - - /** - * 登出功能 - * @return 无 - */ - @PostMapping("/logout") - public Result logout(){ - // TODO 实现登出功能 - return Result.fail("功能未完成"); - } - - @GetMapping("/me") - public Result me(){ - //获取当前登录的用户并返回 - UserDTO user = UserHolder.getUser(); - return Result.ok(user); - } - - @GetMapping("/info/{id}") - public Result info(@PathVariable("id") Long userId){ - // 查询详情 - UserInfo info = userInfoService.getById(userId); - if (info == null) { - // 没有详情,应该是第一次查看详情 - return Result.ok(); - } - info.setCreateTime(null); - info.setUpdateTime(null); - // 返回 - return Result.ok(info); - } -} diff --git a/src/main/java/com/hmdp/controller/VoucherController.java b/src/main/java/com/hmdp/controller/VoucherController.java deleted file mode 100644 index 328a0e6..0000000 --- a/src/main/java/com/hmdp/controller/VoucherController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.hmdp.controller; - - -import com.hmdp.dto.Result; -import com.hmdp.entity.Voucher; -import com.hmdp.service.IVoucherService; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/voucher") -public class VoucherController { - - @Resource - private IVoucherService voucherService; - - /** - * 新增普通券 - * @param voucher 优惠券信息 - * @return 优惠券id - */ - @PostMapping - public Result addVoucher(@RequestBody Voucher voucher) { - voucherService.save(voucher); - return Result.ok(voucher.getId()); - } - - /** - * 新增秒杀券 - * @param voucher 优惠券信息,包含秒杀信息 - * @return 优惠券id - */ - @PostMapping("seckill") - public Result addSeckillVoucher(@RequestBody Voucher voucher) { - voucherService.addSeckillVoucher(voucher); - return Result.ok(voucher.getId()); - } - - /** - * 查询店铺的优惠券列表 - * @param shopId 店铺id - * @return 优惠券列表 - */ - @GetMapping("/list/{shopId}") - public Result queryVoucherOfShop(@PathVariable("shopId") Long shopId) { - return voucherService.queryVoucherOfShop(shopId); - } -} diff --git a/src/main/java/com/hmdp/controller/VoucherOrderController.java b/src/main/java/com/hmdp/controller/VoucherOrderController.java deleted file mode 100644 index 0ddf4f8..0000000 --- a/src/main/java/com/hmdp/controller/VoucherOrderController.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hmdp.controller; - - -import com.hmdp.dto.Result; -import com.hmdp.service.impl.VoucherOrderServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - *

- * 前端控制器 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@RestController -@RequestMapping("/voucher-order") -public class VoucherOrderController { - - @Autowired - private VoucherOrderServiceImpl voucherOrderService; - - @PostMapping("seckill/{id}") - public Result seckillVoucher(@PathVariable("id") Long voucherId) { -// System.out.println(voucherId); - return voucherOrderService.seckillVoucher(voucherId); - } -} diff --git a/src/main/java/com/hmdp/dto/LoginFormDTO.java b/src/main/java/com/hmdp/dto/LoginFormDTO.java deleted file mode 100644 index f8f4016..0000000 --- a/src/main/java/com/hmdp/dto/LoginFormDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hmdp.dto; - -import lombok.Data; - -@Data -public class LoginFormDTO { - private String phone; - private String code; - private String password; -} diff --git a/src/main/java/com/hmdp/dto/Result.java b/src/main/java/com/hmdp/dto/Result.java deleted file mode 100644 index cc098e6..0000000 --- a/src/main/java/com/hmdp/dto/Result.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.hmdp.dto; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class Result { - private Boolean success; - private String errorMsg; - private Object data; - private Long total; - - public static Result ok(){ - return new Result(true, null, null, null); - } - public static Result ok(Object data){ - return new Result(true, null, data, null); - } - public static Result ok(List data, Long total){ - return new Result(true, null, data, total); - } - public static Result fail(String errorMsg){ - return new Result(false, errorMsg, null, null); - } -} diff --git a/src/main/java/com/hmdp/dto/ScrollResult.java b/src/main/java/com/hmdp/dto/ScrollResult.java deleted file mode 100644 index 530fcac..0000000 --- a/src/main/java/com/hmdp/dto/ScrollResult.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hmdp.dto; - -import lombok.Data; - -import java.util.List; - -@Data -public class ScrollResult { - private List list; - private Long minTime; - private Integer offset; -} diff --git a/src/main/java/com/hmdp/dto/UserDTO.java b/src/main/java/com/hmdp/dto/UserDTO.java deleted file mode 100644 index 4dd1802..0000000 --- a/src/main/java/com/hmdp/dto/UserDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hmdp.dto; - -import lombok.Data; - -@Data -public class UserDTO { - private Long id; - private String nickName; - private String icon; -} diff --git a/src/main/java/com/hmdp/entity/Blog.java b/src/main/java/com/hmdp/entity/Blog.java deleted file mode 100644 index f5c8872..0000000 --- a/src/main/java/com/hmdp/entity/Blog.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_blog") -public class Blog implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - /** - * 商户id - */ - private Long shopId; - /** - * 用户id - */ - private Long userId; - /** - * 用户图标 - */ - @TableField(exist = false) - private String icon; - /** - * 用户姓名 - */ - @TableField(exist = false) - private String name; - /** - * 是否点赞过了 - */ - @TableField(exist = false) - private Boolean isLike; - - /** - * 标题 - */ - private String title; - - /** - * 探店的照片,最多9张,多张以","隔开 - */ - private String images; - - /** - * 探店的文字描述 - */ - private String content; - - /** - * 点赞数量 - */ - private Integer liked; - - /** - * 评论数量 - */ - private Integer comments; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/BlogComments.java b/src/main/java/com/hmdp/entity/BlogComments.java deleted file mode 100644 index 086f356..0000000 --- a/src/main/java/com/hmdp/entity/BlogComments.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_blog_comments") -public class BlogComments implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 用户id - */ - private Long userId; - - /** - * 探店id - */ - private Long blogId; - - /** - * 关联的1级评论id,如果是一级评论,则值为0 - */ - private Long parentId; - - /** - * 回复的评论id - */ - private Long answerId; - - /** - * 回复的内容 - */ - private String content; - - /** - * 点赞数 - */ - private Integer liked; - - /** - * 状态,0:正常,1:被举报,2:禁止查看 - */ - private Boolean status; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/Follow.java b/src/main/java/com/hmdp/entity/Follow.java deleted file mode 100644 index 4c8fd3b..0000000 --- a/src/main/java/com/hmdp/entity/Follow.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_follow") -public class Follow implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 用户id - */ - private Long userId; - - /** - * 关联的用户id - */ - private Long followUserId; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - -} diff --git a/src/main/java/com/hmdp/entity/SeckillVoucher.java b/src/main/java/com/hmdp/entity/SeckillVoucher.java deleted file mode 100644 index a2d25ee..0000000 --- a/src/main/java/com/hmdp/entity/SeckillVoucher.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * 秒杀优惠券表,与优惠券是一对一关系 - *

- * - * @author 虎哥 - * @since 2022-01-04 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_seckill_voucher") -public class SeckillVoucher implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 关联的优惠券的id - */ - @TableId(value = "voucher_id", type = IdType.INPUT) - private Long voucherId; - - /** - * 库存 - */ - private Integer stock; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 生效时间 - */ - private LocalDateTime beginTime; - - /** - * 失效时间 - */ - private LocalDateTime endTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/Shop.java b/src/main/java/com/hmdp/entity/Shop.java deleted file mode 100644 index 2a3a626..0000000 --- a/src/main/java/com/hmdp/entity/Shop.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_shop") -public class Shop implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 商铺名称 - */ - private String name; - - /** - * 商铺类型的id - */ - private Long typeId; - - /** - * 商铺图片,多个图片以','隔开 - */ - private String images; - - /** - * 商圈,例如陆家嘴 - */ - private String area; - - /** - * 地址 - */ - private String address; - - /** - * 经度 - */ - private Double x; - - /** - * 维度 - */ - private Double y; - - /** - * 均价,取整数 - */ - private Long avgPrice; - - /** - * 销量 - */ - private Integer sold; - - /** - * 评论数量 - */ - private Integer comments; - - /** - * 评分,1~5分,乘10保存,避免小数 - */ - private Integer score; - - /** - * 营业时间,例如 10:00-22:00 - */ - private String openHours; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - - @TableField(exist = false) - private Double distance; -} diff --git a/src/main/java/com/hmdp/entity/ShopType.java b/src/main/java/com/hmdp/entity/ShopType.java deleted file mode 100644 index 5d4f259..0000000 --- a/src/main/java/com/hmdp/entity/ShopType.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_shop_type") -public class ShopType implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 类型名称 - */ - private String name; - - /** - * 图标 - */ - private String icon; - - /** - * 顺序 - */ - private Integer sort; - - /** - * 创建时间 - */ - @JsonIgnore - private LocalDateTime createTime; - - /** - * 更新时间 - */ - @JsonIgnore - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/User.java b/src/main/java/com/hmdp/entity/User.java deleted file mode 100644 index 29f0de7..0000000 --- a/src/main/java/com/hmdp/entity/User.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_user") -public class User implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 手机号码 - */ - private String phone; - - /** - * 密码,加密存储 - */ - private String password; - - /** - * 昵称,默认是随机字符 - */ - private String nickName; - - /** - * 用户头像 - */ - private String icon = ""; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/UserInfo.java b/src/main/java/com/hmdp/entity/UserInfo.java deleted file mode 100644 index 428be15..0000000 --- a/src/main/java/com/hmdp/entity/UserInfo.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-24 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_user_info") -public class UserInfo implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键,用户id - */ - @TableId(value = "user_id", type = IdType.AUTO) - private Long userId; - - /** - * 城市名称 - */ - private String city; - - /** - * 个人介绍,不要超过128个字符 - */ - private String introduce; - - /** - * 粉丝数量 - */ - private Integer fans; - - /** - * 关注的人的数量 - */ - private Integer followee; - - /** - * 性别,0:男,1:女 - */ - private Boolean gender; - - /** - * 生日 - */ - private LocalDate birthday; - - /** - * 积分 - */ - private Integer credits; - - /** - * 会员级别,0~9级,0代表未开通会员 - */ - private Boolean level; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/Voucher.java b/src/main/java/com/hmdp/entity/Voucher.java deleted file mode 100644 index daffdee..0000000 --- a/src/main/java/com/hmdp/entity/Voucher.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_voucher") -public class Voucher implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 商铺id - */ - private Long shopId; - - /** - * 代金券标题 - */ - private String title; - - /** - * 副标题 - */ - private String subTitle; - - /** - * 使用规则 - */ - private String rules; - - /** - * 支付金额 - */ - private Long payValue; - - /** - * 抵扣金额 - */ - private Long actualValue; - - /** - * 优惠券类型 - */ - private Integer type; - - /** - * 优惠券类型 - */ - private Integer status; - /** - * 库存 - */ - @TableField(exist = false) - private Integer stock; - - /** - * 生效时间 - */ - @TableField(exist = false) - private LocalDateTime beginTime; - - /** - * 失效时间 - */ - @TableField(exist = false) - private LocalDateTime endTime; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/entity/VoucherOrder.java b/src/main/java/com/hmdp/entity/VoucherOrder.java deleted file mode 100644 index 1e5f673..0000000 --- a/src/main/java/com/hmdp/entity/VoucherOrder.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hmdp.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - *

- * - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("tb_voucher_order") -public class VoucherOrder implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - private Long id; - - /** - * 下单的用户id - */ - private Long userId; - - /** - * 购买的代金券id - */ - private Long voucherId; - - /** - * 支付方式 1:余额支付;2:支付宝;3:微信 - */ - private Integer payType; - - /** - * 订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款 - */ - private Integer status; - - /** - * 下单时间 - */ - private LocalDateTime createTime; - - /** - * 支付时间 - */ - private LocalDateTime payTime; - - /** - * 核销时间 - */ - private LocalDateTime useTime; - - /** - * 退款时间 - */ - private LocalDateTime refundTime; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - -} diff --git a/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java b/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java deleted file mode 100644 index 6d40ad0..0000000 --- a/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.BlogComments; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface BlogCommentsMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/BlogMapper.java b/src/main/java/com/hmdp/mapper/BlogMapper.java deleted file mode 100644 index ec3b62e..0000000 --- a/src/main/java/com/hmdp/mapper/BlogMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.Blog; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface BlogMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/FollowMapper.java b/src/main/java/com/hmdp/mapper/FollowMapper.java deleted file mode 100644 index 926308a..0000000 --- a/src/main/java/com/hmdp/mapper/FollowMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.Follow; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface FollowMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java b/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java deleted file mode 100644 index 3cf4af8..0000000 --- a/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.SeckillVoucher; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 秒杀优惠券表,与优惠券是一对一关系 Mapper 接口 - *

- * - * @author 虎哥 - * @since 2022-01-04 - */ -public interface SeckillVoucherMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/ShopMapper.java b/src/main/java/com/hmdp/mapper/ShopMapper.java deleted file mode 100644 index d5694d4..0000000 --- a/src/main/java/com/hmdp/mapper/ShopMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.Shop; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface ShopMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/ShopTypeMapper.java b/src/main/java/com/hmdp/mapper/ShopTypeMapper.java deleted file mode 100644 index b09890b..0000000 --- a/src/main/java/com/hmdp/mapper/ShopTypeMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.ShopType; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface ShopTypeMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/UserInfoMapper.java b/src/main/java/com/hmdp/mapper/UserInfoMapper.java deleted file mode 100644 index 77b9250..0000000 --- a/src/main/java/com/hmdp/mapper/UserInfoMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.UserInfo; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-24 - */ -public interface UserInfoMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/UserMapper.java b/src/main/java/com/hmdp/mapper/UserMapper.java deleted file mode 100644 index adcebe3..0000000 --- a/src/main/java/com/hmdp/mapper/UserMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.User; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface UserMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/mapper/VoucherMapper.java b/src/main/java/com/hmdp/mapper/VoucherMapper.java deleted file mode 100644 index 2db21ed..0000000 --- a/src/main/java/com/hmdp/mapper/VoucherMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hmdp.entity.Voucher; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface VoucherMapper extends BaseMapper { - - List queryVoucherOfShop(@Param("shopId") Long shopId); -} diff --git a/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java b/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java deleted file mode 100644 index e0cd90a..0000000 --- a/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.mapper; - -import com.hmdp.entity.VoucherOrder; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface VoucherOrderMapper extends BaseMapper { - -} diff --git a/src/main/java/com/hmdp/service/IBlogCommentsService.java b/src/main/java/com/hmdp/service/IBlogCommentsService.java deleted file mode 100644 index 12dbee0..0000000 --- a/src/main/java/com/hmdp/service/IBlogCommentsService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.entity.BlogComments; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IBlogCommentsService extends IService { - -} diff --git a/src/main/java/com/hmdp/service/IBlogService.java b/src/main/java/com/hmdp/service/IBlogService.java deleted file mode 100644 index 33ffd0e..0000000 --- a/src/main/java/com/hmdp/service/IBlogService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.entity.Blog; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IBlogService extends IService { - -} diff --git a/src/main/java/com/hmdp/service/IFollowService.java b/src/main/java/com/hmdp/service/IFollowService.java deleted file mode 100644 index 767c12d..0000000 --- a/src/main/java/com/hmdp/service/IFollowService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.entity.Follow; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IFollowService extends IService { - -} diff --git a/src/main/java/com/hmdp/service/ISeckillVoucherService.java b/src/main/java/com/hmdp/service/ISeckillVoucherService.java deleted file mode 100644 index fb6642b..0000000 --- a/src/main/java/com/hmdp/service/ISeckillVoucherService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.entity.SeckillVoucher; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 秒杀优惠券表,与优惠券是一对一关系 服务类 - *

- * - * @author 虎哥 - * @since 2022-01-04 - */ -public interface ISeckillVoucherService extends IService { - -} diff --git a/src/main/java/com/hmdp/service/IShopService.java b/src/main/java/com/hmdp/service/IShopService.java deleted file mode 100644 index 6dd6bb7..0000000 --- a/src/main/java/com/hmdp/service/IShopService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.dto.Result; -import com.hmdp.entity.Shop; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IShopService extends IService { - - Result queryById(Long id); - - Result updateShopById(Shop shop); -} diff --git a/src/main/java/com/hmdp/service/IShopTypeService.java b/src/main/java/com/hmdp/service/IShopTypeService.java deleted file mode 100644 index a4e5183..0000000 --- a/src/main/java/com/hmdp/service/IShopTypeService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.dto.Result; -import com.hmdp.entity.ShopType; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IShopTypeService extends IService { - - Result queryTypeList(); -} diff --git a/src/main/java/com/hmdp/service/IUserInfoService.java b/src/main/java/com/hmdp/service/IUserInfoService.java deleted file mode 100644 index e8df101..0000000 --- a/src/main/java/com/hmdp/service/IUserInfoService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.entity.UserInfo; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-24 - */ -public interface IUserInfoService extends IService { - -} diff --git a/src/main/java/com/hmdp/service/IUserService.java b/src/main/java/com/hmdp/service/IUserService.java deleted file mode 100644 index ed5685c..0000000 --- a/src/main/java/com/hmdp/service/IUserService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hmdp.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.hmdp.dto.LoginFormDTO; -import com.hmdp.dto.Result; -import com.hmdp.entity.User; - -import javax.servlet.http.HttpSession; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IUserService extends IService { - - Result sendCode(String phone, HttpSession session); - - Result login(LoginFormDTO loginForm, HttpSession session); -} diff --git a/src/main/java/com/hmdp/service/IVoucherOrderService.java b/src/main/java/com/hmdp/service/IVoucherOrderService.java deleted file mode 100644 index 91f8fa4..0000000 --- a/src/main/java/com/hmdp/service/IVoucherOrderService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.dto.Result; -import com.hmdp.entity.VoucherOrder; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IVoucherOrderService extends IService { - - Result seckillVoucher(Long voucherId); - - Result creatVoucheOrder(Long voucherId); -} diff --git a/src/main/java/com/hmdp/service/IVoucherService.java b/src/main/java/com/hmdp/service/IVoucherService.java deleted file mode 100644 index bac7ad2..0000000 --- a/src/main/java/com/hmdp/service/IVoucherService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.hmdp.service; - -import com.hmdp.dto.Result; -import com.hmdp.entity.Voucher; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -public interface IVoucherService extends IService { - - Result queryVoucherOfShop(Long shopId); - - void addSeckillVoucher(Voucher voucher); - -} diff --git a/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java b/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java deleted file mode 100644 index 4224ff9..0000000 --- a/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service.impl; - -import com.hmdp.entity.BlogComments; -import com.hmdp.mapper.BlogCommentsMapper; -import com.hmdp.service.IBlogCommentsService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class BlogCommentsServiceImpl extends ServiceImpl implements IBlogCommentsService { - -} diff --git a/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java b/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java deleted file mode 100644 index dc85c57..0000000 --- a/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service.impl; - -import com.hmdp.entity.Blog; -import com.hmdp.mapper.BlogMapper; -import com.hmdp.service.IBlogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class BlogServiceImpl extends ServiceImpl implements IBlogService { - -} diff --git a/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java b/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java deleted file mode 100644 index c044b79..0000000 --- a/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service.impl; - -import com.hmdp.entity.Follow; -import com.hmdp.mapper.FollowMapper; -import com.hmdp.service.IFollowService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class FollowServiceImpl extends ServiceImpl implements IFollowService { - -} diff --git a/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java b/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java deleted file mode 100644 index 485860f..0000000 --- a/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service.impl; - -import com.hmdp.entity.SeckillVoucher; -import com.hmdp.mapper.SeckillVoucherMapper; -import com.hmdp.service.ISeckillVoucherService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 秒杀优惠券表,与优惠券是一对一关系 服务实现类 - *

- * - * @author 虎哥 - * @since 2022-01-04 - */ -@Service -public class SeckillVoucherServiceImpl extends ServiceImpl implements ISeckillVoucherService { - -} diff --git a/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java b/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java deleted file mode 100644 index 3d17787..0000000 --- a/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hmdp.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.BooleanUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; -import com.hmdp.dto.Result; -import com.hmdp.entity.Shop; -import com.hmdp.mapper.ShopMapper; -import com.hmdp.service.IShopService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; - -import java.util.concurrent.TimeUnit; - -import static com.hmdp.utils.RedisConstants.CACHE_SHOP_KEY; -import static com.hmdp.utils.RedisConstants.CACHE_SHOP_TTL; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class ShopServiceImpl extends ServiceImpl implements IShopService { - @Resource - private StringRedisTemplate stringRedisTemplate; - @Override - public Result queryById(Long id) { - Shop shop = queryByIdWithMutex(id); - if (shop == null){ - return Result.fail("店铺不存在"); - } - return Result.ok(shop); - } - - public Shop queryByIdWithRedis(Long id) { - // 使用redis缓存 - // 查询缓存 - String cacheShop = stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY + id); - // 判断是否存在 - Shop shop = new Shop(); - if(StrUtil.isNotBlank(cacheShop)){ - // 存在直接返回 - shop = JSONUtil.toBean(cacheShop, Shop.class); - return shop; - } - // 不存在,查询数据库 - shop = getById(id); - if(shop == null){ - // 数据库不存在,返回错误 - return null; - // 解决缓存穿透的话,就在这往redis存一个null - } - stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES); - return shop; - } - - public Shop queryByIdWithMutex(Long id) { - String key = CACHE_SHOP_KEY + id; - // 使用redis缓存 - // 查询缓存 - String cacheShop = stringRedisTemplate.opsForValue().get(key); - // 判断是否存在 - Shop shop = new Shop(); - if(StrUtil.isNotBlank(cacheShop)){ - // 存在直接返回 - shop = JSONUtil.toBean(cacheShop, Shop.class); - return shop; - } - - boolean isLock = false; - try { - isLock =tryLock(id); - // 不存在,尝试获取互斥锁 - if(isLock){ - // 获取到互斥锁,查询数据库 - shop = getById(id); - Thread.sleep(200); //模拟重建时的延迟 - if(shop == null){ - // 解决缓存穿透的话,就在这往redis存一个null - stringRedisTemplate.opsForValue().set(key, "",CACHE_SHOP_TTL, TimeUnit.MINUTES); - // 数据库不存在,返回错误 - return null; - } - // 存入缓存 - stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES); - } - // 没有获取到互斥锁 - // 休眠后重新执行 - Thread.sleep(50); - return queryByIdWithMutex (id); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } finally { - // 释放互斥锁 - if (isLock) { - delectLock(id); - } - - } - } - - private boolean tryLock(Long id) { - // 本质就是设置一个redis缓存,key任意 - // 设置10秒过期时间防止死锁,10秒就够,因为这些请求一半都很快 - Boolean flag = stringRedisTemplate.opsForValue().setIfAbsent("lock:shop:"+id, "1",10, TimeUnit.SECONDS); - return BooleanUtil.isTrue(flag); - } - private void delectLock(Long id) { - // 本质就是删除上面key对应的缓存 - stringRedisTemplate.delete("lock:shop:"+id); - } - - @Override - @Transactional // 保证原子性 - public Result updateShopById(Shop shop) { - Long shopId = shop.getId(); - if(shopId == null){ - return Result.fail("店铺id不能为空"); - } - // 更新数据库 - updateById(shop); - // 删除缓存 - stringRedisTemplate.delete(CACHE_SHOP_KEY + shopId); - return Result.ok(); - } -} diff --git a/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java b/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java deleted file mode 100644 index 68628f3..0000000 --- a/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.hmdp.service.impl; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; -import com.hmdp.dto.Result; -import com.hmdp.entity.ShopType; -import com.hmdp.mapper.ShopTypeMapper; -import com.hmdp.service.IShopTypeService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hmdp.utils.RedisConstants; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import static com.hmdp.utils.RedisConstants.CACHE_SHOP_TTL; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class ShopTypeServiceImpl extends ServiceImpl implements IShopTypeService { - @Resource - private StringRedisTemplate stringRedisTemplate; - @Override - public Result queryTypeList() { - // list类型的数据怎么处理 - String cacheShop = stringRedisTemplate.opsForValue().get(RedisConstants.CACHE_SHOP_KEY + "list"); - if(StrUtil.isNotBlank(cacheShop)){ - // 将string转成list - return Result.ok(JSONUtil.toList(cacheShop, ShopType.class)); - } - // 如果为空去数据库查 - List sortShop = query().orderByAsc("sort").list(); - if(sortShop == null){ - return Result.fail("查询失败"); - } - stringRedisTemplate.opsForValue().set(RedisConstants.CACHE_SHOP_KEY + "list", JSONUtil.toJsonStr(sortShop),CACHE_SHOP_TTL, TimeUnit.MINUTES); - return Result.ok(sortShop); - } -} diff --git a/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java b/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java deleted file mode 100644 index 402977f..0000000 --- a/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hmdp.service.impl; - -import com.hmdp.entity.UserInfo; -import com.hmdp.mapper.UserInfoMapper; -import com.hmdp.service.IUserInfoService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-24 - */ -@Service -public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { - -} diff --git a/src/main/java/com/hmdp/service/impl/UserServiceImpl.java b/src/main/java/com/hmdp/service/impl/UserServiceImpl.java deleted file mode 100644 index ea63632..0000000 --- a/src/main/java/com/hmdp/service/impl/UserServiceImpl.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.hmdp.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import cn.hutool.core.lang.UUID; -import cn.hutool.core.util.RandomUtil; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hmdp.dto.LoginFormDTO; -import com.hmdp.dto.Result; -import com.hmdp.dto.UserDTO; -import com.hmdp.entity.User; -import com.hmdp.mapper.UserMapper; -import com.hmdp.service.IUserService; -import com.hmdp.utils.RegexUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import javax.servlet.http.HttpSession; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static com.hmdp.utils.RedisConstants.*; -import static com.hmdp.utils.SystemConstants.USER_NICK_NAME_PREFIX; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Slf4j -@Service -public class UserServiceImpl extends ServiceImpl implements IUserService { - @Resource - private StringRedisTemplate stringRedisTemplate; - @Override - public Result sendCode(String phone, HttpSession session) { - // 校验手机号是否合格 - if(RegexUtils.isPhoneInvalid(phone)){ - return Result.fail("手机号格式错误"); - } - // 合格生成验证码 - String code = RandomUtil.randomNumbers(6); -// // 保存到session -// session.setAttribute("code",code); - // 保存到redis,并且两分钟失效 - stringRedisTemplate.opsForValue().set(LOGIN_CODE_KEY+phone,code,LOGIN_CODE_TTL, TimeUnit.MINUTES); - // 发送验证码 - log.debug("发送验证码成功,验证码为:{}",code); - return Result.ok(); - } - - @Override - public Result login(LoginFormDTO loginForm, HttpSession session) { - // 校验手机号是否合格 - String phone = loginForm.getPhone(); - if(RegexUtils.isPhoneInvalid(phone)){ - return Result.fail("手机号格式错误"); - } - // 获取loginForm中的code对比session中的 - String code = loginForm.getCode(); -// if(code == null || !code.equals(session.getAttribute("code"))){ -// return Result.fail("验证码错误"); -// } - String cacheCode = stringRedisTemplate.opsForValue().get(LOGIN_CODE_KEY+phone); - if(code == null || !code.equals(cacheCode)){ - return Result.fail("验证码错误"); - } - // 判断用户是否存在,存在存到session,不存在创建用户 - User user = query().eq("phone", phone).one(); - if (user == null){ - user = saveUserByPhone(phone); - save(user); - } -// session.setAttribute("user",user); - // 保存用户信息到 redis中 - // 随机生成token,作为登录令牌 - String token = UUID.randomUUID().toString(true); - // 将user对象转成hashMap - UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class); - Map userMap = BeanUtil.beanToMap(userDTO, new HashMap<>(), - CopyOptions.create() - .setIgnoreNullValue(true) - .setFieldValueEditor((fieldName, fieldValue) -> fieldValue.toString())); - stringRedisTemplate.opsForHash().putAll(LOGIN_USER_KEY+token,userMap); - stringRedisTemplate.expire(LOGIN_USER_KEY+token,LOGIN_USER_TTL,TimeUnit.MINUTES); - return Result.ok(token); - } - - private User saveUserByPhone(String phone) { - User user = new User(); - user.setPhone(phone); - user.setNickName(USER_NICK_NAME_PREFIX+RandomUtil.randomString(10)); - return user; - } -} diff --git a/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java deleted file mode 100644 index 76cf478..0000000 --- a/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.hmdp.service.impl; - -import cn.hutool.db.handler.RsHandler; -import com.hmdp.config.RedissonConfig; -import com.hmdp.dto.Result; -import com.hmdp.entity.SeckillVoucher; -import com.hmdp.entity.Voucher; -import com.hmdp.entity.VoucherOrder; -import com.hmdp.mapper.VoucherOrderMapper; -import com.hmdp.service.ISeckillVoucherService; -import com.hmdp.service.IVoucherOrderService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hmdp.service.IVoucherService; -import com.hmdp.utils.RedisIdWorker; -import com.hmdp.utils.SimpleRedisLock; -import com.hmdp.utils.UserHolder; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; -import org.springframework.aop.framework.AopContext; -import org.springframework.aop.framework.AopProxy; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.time.LocalDateTime; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class VoucherOrderServiceImpl extends ServiceImpl implements IVoucherOrderService { - @Autowired - private ISeckillVoucherService iSeckillVoucherService; - @Autowired - private RedisIdWorker redisIdWorker; - @Resource - private StringRedisTemplate stringRedisTemplate; - @Resource - private RedissonClient redissonClient; - @Override - public Result seckillVoucher(Long voucherId) { - - // 根据vorcherId查询优惠券 - SeckillVoucher seckillVoucher = iSeckillVoucherService.getById(voucherId); - // 判断秒杀功能是否已经开始或结束 - if (seckillVoucher.getBeginTime().isAfter(LocalDateTime.now())) { - return Result.fail("秒杀功能还未开始"); - } else if (seckillVoucher.getEndTime().isBefore(LocalDateTime.now())) { - return Result.fail("秒杀功能已经结束"); - } - // 判断库存是否充足 - if(seckillVoucher.getStock()<1){ - return Result.fail("库存不足"); - } - Long userID = UserHolder.getUser().getId(); - -// // 基于悲观锁,但是这个在集群环境下还是会导致线程不安全 -// synchronized(userID.toString().intern()) { -// // 获取代理对象,才能让事务生效 -// IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy(); -// return proxy.creatVoucheOrder(voucherId); -// } - // 不再用自己实现的分布式锁了,因为它存在不可重入,不可重试,超时释放,主从一致的问题 -// SimpleRedisLock simpleRedisLock = new SimpleRedisLock("oreder:" + userID, stringRedisTemplate); -// boolean isLock = simpleRedisLock.tryLock(1200L); - // 利用redission 的分布式锁可以解决上述问题 - RLock lock = redissonClient.getLock("lock:oreder:" + userID); - boolean isLock = lock.tryLock(); - if(!isLock){ - return Result.fail("请勿重复下单"); - } - // 获取代理对象,才能让事务生效 - try { - IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy(); - return proxy.creatVoucheOrder(voucherId); - } finally { - // 释放锁 - lock.unlock(); - } - - } - @Transactional - public Result creatVoucheOrder(Long voucherId) { - Long userID = UserHolder.getUser().getId(); - - // 判断当前用户是否已经抢过订单了 - Integer count = query().eq("user_id", userID).eq("voucher_id", voucherId).count(); - - if(count>0){ - return Result.fail("您已经抢过该优惠券了"); - } - // 扣减库存,乐观锁,CAS法 - // boolean succed = iSeckillVoucherService.update().setSql("stock = stock-1"). - // eq("voucher_id",voucherId).eq("stock",seckillVoucher.getStock()).update(); 这种情况会导致即使有很多余额也会说库存不足 - boolean succed = iSeckillVoucherService.update().setSql("stock = stock-1"). - eq("voucher_id",voucherId).gt("stock",0).update(); - if(!succed){ - System.out.println("失败"); - return Result.fail("库存不足"); - } - // 创建一个新的voucherOrder订单 - VoucherOrder voucherOrder = new VoucherOrder(); - long orderId = redisIdWorker.nextId("order"); - voucherOrder.setId(orderId); - - voucherOrder.setUserId(userID); - voucherOrder.setVoucherId(voucherId); - save(voucherOrder); - // 返回订单id - return Result.ok(orderId); - - } -} diff --git a/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java deleted file mode 100644 index 8a8a3f6..0000000 --- a/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hmdp.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hmdp.config.RedissonConfig; -import com.hmdp.dto.Result; -import com.hmdp.entity.Voucher; -import com.hmdp.mapper.VoucherMapper; -import com.hmdp.entity.SeckillVoucher; -import com.hmdp.service.ISeckillVoucherService; -import com.hmdp.service.IVoucherService; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.List; - -/** - *

- * 服务实现类 - *

- * - * @author 虎哥 - * @since 2021-12-22 - */ -@Service -public class VoucherServiceImpl extends ServiceImpl implements IVoucherService { - @Resource - private ISeckillVoucherService seckillVoucherService; - - @Override - public Result queryVoucherOfShop(Long shopId) { - // 查询优惠券信息 - List vouchers = getBaseMapper().queryVoucherOfShop(shopId); - // 返回结果 - return Result.ok(vouchers); - } - - @Override - @Transactional - public void addSeckillVoucher(Voucher voucher) { - // 保存优惠券 - save(voucher); - // 保存秒杀信息 - SeckillVoucher seckillVoucher = new SeckillVoucher(); - seckillVoucher.setVoucherId(voucher.getId()); - seckillVoucher.setStock(voucher.getStock()); - seckillVoucher.setBeginTime(voucher.getBeginTime()); - seckillVoucher.setEndTime(voucher.getEndTime()); - seckillVoucherService.save(seckillVoucher); - } -} diff --git a/src/main/java/com/hmdp/utils/ILock.java b/src/main/java/com/hmdp/utils/ILock.java deleted file mode 100644 index b617aa5..0000000 --- a/src/main/java/com/hmdp/utils/ILock.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.hmdp.utils; - -public interface ILock { - boolean tryLock(Long timeOutSec); - - void unLock(); -} diff --git a/src/main/java/com/hmdp/utils/LoginInterceptor.java b/src/main/java/com/hmdp/utils/LoginInterceptor.java deleted file mode 100644 index 1910098..0000000 --- a/src/main/java/com/hmdp/utils/LoginInterceptor.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.hmdp.utils; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import com.hmdp.dto.UserDTO; -import com.hmdp.entity.User; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.HandlerInterceptor; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static com.hmdp.utils.RedisConstants.LOGIN_USER_KEY; - -public class LoginInterceptor implements HandlerInterceptor { - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - if(UserHolder.getUser() == null){ - response.setStatus(401); - return false; - } - return true; - } -} diff --git a/src/main/java/com/hmdp/utils/PasswordEncoder.java b/src/main/java/com/hmdp/utils/PasswordEncoder.java deleted file mode 100644 index 1360e38..0000000 --- a/src/main/java/com/hmdp/utils/PasswordEncoder.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hmdp.utils; - - -import cn.hutool.core.util.RandomUtil; -import org.springframework.util.DigestUtils; - -import java.nio.charset.StandardCharsets; - -public class PasswordEncoder { - - public static String encode(String password) { - // 生成盐 - String salt = RandomUtil.randomString(20); - // 加密 - return encode(password,salt); - } - private static String encode(String password, String salt) { - // 加密 - return salt + "@" + DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8)); - } - public static Boolean matches(String encodedPassword, String rawPassword) { - if (encodedPassword == null || rawPassword == null) { - return false; - } - if(!encodedPassword.contains("@")){ - throw new RuntimeException("密码格式不正确!"); - } - String[] arr = encodedPassword.split("@"); - // 获取盐 - String salt = arr[0]; - // 比较 - return encodedPassword.equals(encode(rawPassword, salt)); - } -} diff --git a/src/main/java/com/hmdp/utils/RedisConstants.java b/src/main/java/com/hmdp/utils/RedisConstants.java deleted file mode 100644 index c8f8c66..0000000 --- a/src/main/java/com/hmdp/utils/RedisConstants.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.hmdp.utils; - -public class RedisConstants { - public static final String LOGIN_CODE_KEY = "login:code:"; - public static final Long LOGIN_CODE_TTL = 2L; - public static final String LOGIN_USER_KEY = "login:token:"; - public static final Long LOGIN_USER_TTL = 30L; - - public static final Long CACHE_NULL_TTL = 2L; - - public static final Long CACHE_SHOP_TTL = 30L; - public static final String CACHE_SHOP_KEY = "cache:shop:"; - - public static final String LOCK_SHOP_KEY = "lock:shop:"; - public static final Long LOCK_SHOP_TTL = 10L; - - public static final String SECKILL_STOCK_KEY = "seckill:stock:"; - public static final String BLOG_LIKED_KEY = "blog:liked:"; - public static final String FEED_KEY = "feed:"; - public static final String SHOP_GEO_KEY = "shop:geo:"; - public static final String USER_SIGN_KEY = "sign:"; -} diff --git a/src/main/java/com/hmdp/utils/RedisData.java b/src/main/java/com/hmdp/utils/RedisData.java deleted file mode 100644 index 8f777fc..0000000 --- a/src/main/java/com/hmdp/utils/RedisData.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hmdp.utils; - -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class RedisData { - private LocalDateTime expireTime; - private Object data; -} diff --git a/src/main/java/com/hmdp/utils/RedisIdWorker.java b/src/main/java/com/hmdp/utils/RedisIdWorker.java deleted file mode 100644 index 7a4ce0a..0000000 --- a/src/main/java/com/hmdp/utils/RedisIdWorker.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hmdp.utils; - -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; - -@Component -public class RedisIdWorker { - private static final long BEGIN_TIMESTAMP = 1640995200L; - private static final long COUNT_BITS = 32; - @Resource - private StringRedisTemplate stringRedisTemplate; - // 拼接一个时间戳,再加一个根据输入的字符串自增长的32位id - public long nextId(String prefix) { - LocalDateTime now = LocalDateTime.now(); - long GapSecond = now.toEpochSecond(ZoneOffset.UTC)-BEGIN_TIMESTAMP; - String date = now.format(DateTimeFormatter.ofPattern("yyyyMMdd")); - long count = stringRedisTemplate.opsForValue().increment("icr:" + prefix+date); - return GapSecond <<32 | count; - } - - -// public static void main(String[] args) { -// LocalDateTime localDateTime = LocalDateTime.of(2022, 1, 1, 0, 0, 0); -// System.out.println(localDateTime.toEpochSecond(ZoneOffset.UTC)); //获取这个时间的秒数 -// } -} diff --git a/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java b/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java deleted file mode 100644 index c2b10dd..0000000 --- a/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hmdp.utils; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import com.hmdp.dto.UserDTO; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.HandlerInterceptor; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static com.hmdp.utils.RedisConstants.LOGIN_USER_KEY; - -public class RefreshTokenInterceptor implements HandlerInterceptor { - private final StringRedisTemplate stringRedisTemplate; - public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) { - this.stringRedisTemplate = stringRedisTemplate; - } - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - // 获取token - String token = request.getHeader("authorization"); - if (StrUtil.isBlank(token)) { - return true; - } -// HttpSession session = request.getSession(); -// User user = (User) session.getAttribute("user"); - System.out.println(stringRedisTemplate); - Map userMap = stringRedisTemplate.opsForHash().entries(LOGIN_USER_KEY + token); - - if (userMap.isEmpty()) { - return true; - } - // 将userMap转成userDto - UserDTO userdto = BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false); - // 将user信息保存到线程中 - UserHolder.saveUser(userdto); - // 更新token的时间,service层的那种写法是直接三十分钟后就会失效 - // 但是实际应该是三十分钟没访问的话才失效 - stringRedisTemplate.expire(LOGIN_USER_KEY + token, RedisConstants.LOGIN_USER_TTL, TimeUnit.MINUTES); - return true; - } - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - // 移除用户 - UserHolder.removeUser(); - } -} diff --git a/src/main/java/com/hmdp/utils/RegexPatterns.java b/src/main/java/com/hmdp/utils/RegexPatterns.java deleted file mode 100644 index 2276859..0000000 --- a/src/main/java/com/hmdp/utils/RegexPatterns.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hmdp.utils; - -/** - * @author 虎哥 - */ -public abstract class RegexPatterns { - /** - * 手机号正则 - */ - public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; - /** - * 邮箱正则 - */ - public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; - /** - * 密码正则。4~32位的字母、数字、下划线 - */ - public static final String PASSWORD_REGEX = "^\\w{4,32}$"; - /** - * 验证码正则, 6位数字或字母 - */ - public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$"; - -} diff --git a/src/main/java/com/hmdp/utils/RegexUtils.java b/src/main/java/com/hmdp/utils/RegexUtils.java deleted file mode 100644 index 8936b56..0000000 --- a/src/main/java/com/hmdp/utils/RegexUtils.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hmdp.utils; - -import cn.hutool.core.util.StrUtil; - -/** - * @author 虎哥 - */ -public class RegexUtils { - /** - * 是否是无效手机格式 - * @param phone 要校验的手机号 - * @return true:符合,false:不符合 - */ - public static boolean isPhoneInvalid(String phone){ - return mismatch(phone, RegexPatterns.PHONE_REGEX); - } - /** - * 是否是无效邮箱格式 - * @param email 要校验的邮箱 - * @return true:符合,false:不符合 - */ - public static boolean isEmailInvalid(String email){ - return mismatch(email, RegexPatterns.EMAIL_REGEX); - } - - /** - * 是否是无效验证码格式 - * @param code 要校验的验证码 - * @return true:符合,false:不符合 - */ - public static boolean isCodeInvalid(String code){ - return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX); - } - - // 校验是否不符合正则格式 - private static boolean mismatch(String str, String regex){ - if (StrUtil.isBlank(str)) { - return true; - } - return !str.matches(regex); - } -} diff --git a/src/main/java/com/hmdp/utils/SimpleRedisLock.java b/src/main/java/com/hmdp/utils/SimpleRedisLock.java deleted file mode 100644 index 665e95f..0000000 --- a/src/main/java/com/hmdp/utils/SimpleRedisLock.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hmdp.utils; - -import cn.hutool.core.lang.UUID; -import org.springframework.core.io.ClassPathResource; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.core.script.DefaultRedisScript; -import org.springframework.data.redis.core.script.RedisScript; - -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -public class SimpleRedisLock implements ILock { - private String name; - private StringRedisTemplate stringRedisTemplate; - private static final String KEY_PREFIX = "lock:"; - private static final String ID_PREFIX = UUID.randomUUID().toString(true)+"-"; - private static final DefaultRedisScript UNLOCK_SCRIPT; - - // 通过静态代码块,在类初始化的时候就创建了lua脚本 - static { - UNLOCK_SCRIPT = new DefaultRedisScript<>(); - UNLOCK_SCRIPT.setLocation(new ClassPathResource("unlock.lua")); - UNLOCK_SCRIPT.setResultType(Long.class); - } - - - public SimpleRedisLock(String name, StringRedisTemplate stringRedisTemplate) { - this.name = name; - this.stringRedisTemplate = stringRedisTemplate; - } - - @Override - public boolean tryLock(Long timeOutSec) { - // 获取当前线程id - String threadId = ID_PREFIX+Thread.currentThread().getId(); - Boolean succed = stringRedisTemplate.opsForValue().setIfAbsent(KEY_PREFIX + name, threadId , timeOutSec, TimeUnit.SECONDS); - - return Boolean.TRUE.equals(succed); - } - - @Override -// // 这种实现方法不能保证原子性 -// public void unLock() { -// // 释放锁直接删除就好了 -// // 但是直接删除又会存在一个问题,就是有可能删除的不是自己的锁,所以需要判断 -// String threadId = ID_PREFIX+Thread.currentThread().getId(); -// String id = stringRedisTemplate.opsForValue().get(KEY_PREFIX + name); -// if(id.equals(threadId)) { -// stringRedisTemplate.delete(KEY_PREFIX + name); -// } -// } - public void unLock() { - // 调用lua脚本 - stringRedisTemplate.execute( - UNLOCK_SCRIPT, - Collections.singletonList(KEY_PREFIX+name), - ID_PREFIX+Thread.currentThread().getId() - ); - } -} diff --git a/src/main/java/com/hmdp/utils/SystemConstants.java b/src/main/java/com/hmdp/utils/SystemConstants.java deleted file mode 100644 index 691fb00..0000000 --- a/src/main/java/com/hmdp/utils/SystemConstants.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.hmdp.utils; - -public class SystemConstants { - public static final String IMAGE_UPLOAD_DIR = "D:\\lesson\\nginx-1.18.0\\html\\hmdp\\imgs\\"; - public static final String USER_NICK_NAME_PREFIX = "user_"; - public static final int DEFAULT_PAGE_SIZE = 5; - public static final int MAX_PAGE_SIZE = 10; -} diff --git a/src/main/java/com/hmdp/utils/UserHolder.java b/src/main/java/com/hmdp/utils/UserHolder.java deleted file mode 100644 index 3acc718..0000000 --- a/src/main/java/com/hmdp/utils/UserHolder.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.hmdp.utils; - - -import com.hmdp.dto.UserDTO; -import com.hmdp.entity.User; - -public class UserHolder { - private static final ThreadLocal tl = new ThreadLocal<>(); - - public static void saveUser(UserDTO user){ - tl.set(user); - } - - public static UserDTO getUser(){ - return tl.get(); - } - - public static void removeUser(){ - tl.remove(); - } -} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml deleted file mode 100644 index b1c3e74..0000000 --- a/src/main/resources/application.yaml +++ /dev/null @@ -1,27 +0,0 @@ -server: - port: 8081 -spring: - application: - name: hmdp - datasource: - driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3307/hmdp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC - username: root - password: 123456 - redis: - host: localhost - port: 6379 - password: ningzaichun - lettuce: - pool: - max-active: 10 - max-idle: 10 - min-idle: 1 - time-between-eviction-runs: 10s - jackson: - default-property-inclusion: non_null # JSON处理时忽略非空字段 -mybatis-plus: - type-aliases-package: com.hmdp.entity # 别名扫描包 -logging: - level: - com.hmdp: debug \ No newline at end of file diff --git a/src/main/resources/db/hmdp.sql b/src/main/resources/db/hmdp.sql deleted file mode 100644 index e500b9d..0000000 --- a/src/main/resources/db/hmdp.sql +++ /dev/null @@ -1,1284 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 50622 - Source Host : localhost:3306 - Source Schema : hmdp - - Target Server Type : MySQL - Target Server Version : 50622 - File Encoding : 65001 - - Date: 14/03/2022 21:38:11 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for tb_blog --- ---------------------------- -DROP TABLE IF EXISTS `tb_blog`; -CREATE TABLE `tb_blog` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `shop_id` bigint(20) NOT NULL COMMENT '商户id', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题', - `images` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '探店的照片,最多9张,多张以\",\"隔开', - `content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '探店的文字描述', - `liked` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '点赞数量', - `comments` int(8) UNSIGNED NULL DEFAULT NULL COMMENT '评论数量', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_blog --- ---------------------------- -INSERT INTO `tb_blog` VALUES (4, 4, 2, '无尽浪漫的夜晚丨在万花丛中摇晃着红酒杯🍷品战斧牛排🥩', '/imgs/blogs/7/14/4771fefb-1a87-4252-816c-9f7ec41ffa4a.jpg,/imgs/blogs/4/10/2f07e3c9-ddce-482d-9ea7-c21450f8d7cd.jpg,/imgs/blogs/2/6/b0756279-65da-4f2d-b62a-33f74b06454a.jpg,/imgs/blogs/10/7/7e97f47d-eb49-4dc9-a583-95faa7aed287.jpg,/imgs/blogs/1/2/4a7b496b-2a08-4af7-aa95-df2c3bd0ef97.jpg,/imgs/blogs/14/3/52b290eb-8b5d-403b-8373-ba0bb856d18e.jpg', '生活就是一半烟火·一半诗意
手执烟火谋生活·心怀诗意以谋爱·
当然
\r\n男朋友给不了的浪漫要学会自己给🍒
\n无法重来的一生·尽量快乐.

🏰「小筑里·神秘浪漫花园餐厅」🏰

\n💯这是一家最最最美花园的西餐厅·到处都是花餐桌上是花前台是花 美好无处不在\n品一口葡萄酒,维亚红酒马瑟兰·微醺上头工作的疲惫消失无际·生如此多娇🍃

📍地址:延安路200号(家乐福面)

🚌交通:地铁①号线定安路B口出右转过下通道右转就到啦~

--------------🥣菜品详情🥣---------------

「战斧牛排]
\n超大一块战斧牛排经过火焰的炙烤发出阵阵香,外焦里嫩让人垂涎欲滴,切开牛排的那一刻,牛排的汁水顺势流了出来,分熟的牛排肉质软,简直细嫩到犯规,一刻都等不了要放入嘴里咀嚼~

「奶油培根意面」
太太太好吃了💯
我真的无法形容它的美妙,意面混合奶油香菇的香味真的太太太香了,我真的舔盘了,一丁点美味都不想浪费‼️


「香菜汁烤鲈鱼」
这个酱是辣的 真的绝好吃‼️
鲈鱼本身就很嫩没什么刺,烤过之后外皮酥酥的,鱼肉蘸上酱料根本停不下来啊啊啊啊
能吃辣椒的小伙伴一定要尝尝

非常可 好吃子🍽\n
--------------🍃个人感受🍃---------------

【👩🏻‍🍳服务】
小姐姐特别耐心的给我们介绍彩票
推荐特色菜品,拍照需要帮忙也是尽心尽力配合,太爱他们了

【🍃环境】
比较有格调的西餐厅 整个餐厅的布局可称得上的万花丛生 有种在人间仙境的感觉🌸
集美食美酒与鲜花为一体的风格店铺 令人向往
烟火皆是生活 人间皆是浪漫
', 1, 104, '2021-12-28 19:50:01', '2022-03-10 14:26:34'); -INSERT INTO `tb_blog` VALUES (5, 1, 2, '人均30💰杭州这家港式茶餐厅我疯狂打call‼️', '/imgs/blogs/4/7/863cc302-d150-420d-a596-b16e9232a1a6.jpg,/imgs/blogs/11/12/8b37d208-9414-4e78-b065-9199647bb3e3.jpg,/imgs/blogs/4/1/fa74a6d6-3026-4cb7-b0b6-35abb1e52d11.jpg,/imgs/blogs/9/12/ac2ce2fb-0605-4f14-82cc-c962b8c86688.jpg,/imgs/blogs/4/0/26a7cd7e-6320-432c-a0b4-1b7418f45ec7.jpg,/imgs/blogs/15/9/cea51d9b-ac15-49f6-b9f1-9cf81e9b9c85.jpg', '又吃到一家好吃的茶餐厅🍴环境是怀旧tvb港风📺边吃边拍照片📷几十种菜品均价都在20+💰可以是很平价了!
·
店名:九记冰厅(远洋店)
地址:杭州市丽水路远洋乐堤港负一楼(溜冰场旁边)
·
✔️黯然销魂饭(38💰)
这碗饭我吹爆!米饭上盖满了甜甜的叉烧 还有两颗溏心蛋🍳每一粒米饭都裹着浓郁的酱汁 光盘了
·
✔️铜锣湾漏奶华(28💰)
黄油吐司烤的脆脆的 上面洒满了可可粉🍫一刀切开 奶盖流心像瀑布一样流出来 满足
·
✔️神仙一口西多士士(16💰)
简简单单却超级好吃!西多士烤的很脆 黄油味浓郁 面包体超级柔软 上面淋了炼乳
·
✔️怀旧五柳炸蛋饭(28💰)
四个鸡蛋炸成蓬松的炸蛋!也太好吃了吧!还有大块鸡排 上淋了酸甜的酱汁 太合我胃口了!!
·
✔️烧味双拼例牌(66💰)
选了烧鹅➕叉烧 他家烧腊品质真的惊艳到我!据说是每日广州发货 到店现烧现卖的黑棕鹅 每口都是正宗的味道!肉质很嫩 皮超级超级酥脆!一口爆油!叉烧肉也一点都不柴 甜甜的很入味 搭配梅子酱很解腻 !
·
✔️红烧脆皮乳鸽(18.8💰)
乳鸽很大只 这个价格也太划算了吧, 肉质很有嚼劲 脆皮很酥 越吃越香~
·
✔️大满足小吃拼盘(25💰)
翅尖➕咖喱鱼蛋➕蝴蝶虾➕盐酥鸡
zui喜欢里面的咖喱鱼!咖喱酱香甜浓郁!鱼蛋很q弹~
·
✔️港式熊仔丝袜奶茶(19💰)
小熊🐻造型的奶茶冰也太可爱了!颜值担当 很地道的丝袜奶茶 茶味特别浓郁~
·', 1, 0, '2021-12-28 20:57:49', '2022-03-10 09:21:39'); -INSERT INTO `tb_blog` VALUES (6, 10, 1, '杭州周末好去处|💰50就可以骑马啦🐎', '/imgs/blogs/blog1.jpg', '杭州周末好去处|💰50就可以骑马啦🐎', 1, 0, '2022-01-11 16:05:47', '2022-03-10 09:21:41'); -INSERT INTO `tb_blog` VALUES (7, 10, 1, '杭州周末好去处|💰50就可以骑马啦🐎', '/imgs/blogs/blog1.jpg', '杭州周末好去处|💰50就可以骑马啦🐎', 1, 0, '2022-01-11 16:05:47', '2022-03-10 09:21:42'); - --- ---------------------------- --- Table structure for tb_blog_comments --- ---------------------------- -DROP TABLE IF EXISTS `tb_blog_comments`; -CREATE TABLE `tb_blog_comments` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', - `blog_id` bigint(20) UNSIGNED NOT NULL COMMENT '探店id', - `parent_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的1级评论id,如果是一级评论,则值为0', - `answer_id` bigint(20) UNSIGNED NOT NULL COMMENT '回复的评论id', - `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回复的内容', - `liked` int(8) UNSIGNED NULL DEFAULT NULL COMMENT '点赞数', - `status` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '状态,0:正常,1:被举报,2:禁止查看', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_blog_comments --- ---------------------------- - --- ---------------------------- --- Table structure for tb_follow --- ---------------------------- -DROP TABLE IF EXISTS `tb_follow`; -CREATE TABLE `tb_follow` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', - `follow_user_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的用户id', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_follow --- ---------------------------- - --- ---------------------------- --- Table structure for tb_seckill_voucher --- ---------------------------- -DROP TABLE IF EXISTS `tb_seckill_voucher`; -CREATE TABLE `tb_seckill_voucher` ( - `voucher_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的优惠券的id', - `stock` int(8) NOT NULL COMMENT '库存', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `begin_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '生效时间', - `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '失效时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`voucher_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '秒杀优惠券表,与优惠券是一对一关系' ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_seckill_voucher --- ---------------------------- - --- ---------------------------- --- Table structure for tb_shop --- ---------------------------- -DROP TABLE IF EXISTS `tb_shop`; -CREATE TABLE `tb_shop` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商铺名称', - `type_id` bigint(20) UNSIGNED NOT NULL COMMENT '商铺类型的id', - `images` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商铺图片,多个图片以\',\'隔开', - `area` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商圈,例如陆家嘴', - `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '地址', - `x` double UNSIGNED NOT NULL COMMENT '经度', - `y` double UNSIGNED NOT NULL COMMENT '维度', - `avg_price` bigint(10) UNSIGNED NULL DEFAULT NULL COMMENT '均价,取整数', - `sold` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '销量', - `comments` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '评论数量', - `score` int(2) UNSIGNED ZEROFILL NOT NULL COMMENT '评分,1~5分,乘10保存,避免小数', - `open_hours` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '营业时间,例如 10:00-22:00', - `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `foreign_key_type`(`type_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_shop --- ---------------------------- -INSERT INTO `tb_shop` VALUES (1, '103茶餐厅', 1, 'https://qcloud.dpfile.com/pc/jiclIsCKmOI2arxKN1Uf0Hx3PucIJH8q0QSz-Z8llzcN56-_QiKuOvyio1OOxsRtFoXqu0G3iT2T27qat3WhLVEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vfCF2ubeXzk49OsGrXt_KYDCngOyCwZK-s3fqawWswzk.jpg,https://qcloud.dpfile.com/pc/IOf6VX3qaBgFXFVgp75w-KKJmWZjFc8GXDU8g9bQC6YGCpAmG00QbfT4vCCBj7njuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '大关', '金华路锦昌文华苑29号', 120.149192, 30.316078, 80, 0000004215, 0000003035, 37, '10:00-22:00', '2021-12-22 18:10:39', '2022-01-13 17:32:19'); -INSERT INTO `tb_shop` VALUES (2, '蔡馬洪涛烤肉·老北京铜锅涮羊肉', 1, 'https://p0.meituan.net/bbia/c1870d570e73accbc9fee90b48faca41195272.jpg,http://p0.meituan.net/mogu/397e40c28fc87715b3d5435710a9f88d706914.jpg,https://qcloud.dpfile.com/pc/MZTdRDqCZdbPDUO0Hk6lZENRKzpKRF7kavrkEI99OxqBZTzPfIxa5E33gBfGouhFuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '拱宸桥/上塘', '上塘路1035号(中国工商银行旁)', 120.151505, 30.333422, 85, 0000002160, 0000001460, 46, '11:30-03:00', '2021-12-22 19:00:13', '2022-01-11 16:12:26'); -INSERT INTO `tb_shop` VALUES (3, '新白鹿餐厅(运河上街店)', 1, 'https://p0.meituan.net/biztone/694233_1619500156517.jpeg,https://img.meituan.net/msmerchant/876ca8983f7395556eda9ceb064e6bc51840883.png,https://img.meituan.net/msmerchant/86a76ed53c28eff709a36099aefe28b51554088.png', '运河上街', '台州路2号运河上街购物中心F5', 120.151954, 30.32497, 61, 0000012035, 0000008045, 47, '10:30-21:00', '2021-12-22 19:10:05', '2022-01-11 16:12:42'); -INSERT INTO `tb_shop` VALUES (4, 'Mamala(杭州远洋乐堤港店)', 1, 'https://img.meituan.net/msmerchant/232f8fdf09050838bd33fb24e79f30f9606056.jpg,https://qcloud.dpfile.com/pc/rDe48Xe15nQOHCcEEkmKUp5wEKWbimt-HDeqYRWsYJseXNncvMiXbuED7x1tXqN4uzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '拱宸桥/上塘', '丽水路66号远洋乐堤港商城2期1层B115号', 120.146659, 30.312742, 290, 0000013519, 0000009529, 49, '11:00-22:00', '2021-12-22 19:17:15', '2022-01-11 16:12:51'); -INSERT INTO `tb_shop` VALUES (5, '海底捞火锅(水晶城购物中心店)', 1, 'https://img.meituan.net/msmerchant/054b5de0ba0b50c18a620cc37482129a45739.jpg,https://img.meituan.net/msmerchant/59b7eff9b60908d52bd4aea9ff356e6d145920.jpg,https://qcloud.dpfile.com/pc/Qe2PTEuvtJ5skpUXKKoW9OQ20qc7nIpHYEqJGBStJx0mpoyeBPQOJE4vOdYZwm9AuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '大关', '上塘路458号水晶城购物中心F6', 120.15778, 30.310633, 104, 0000004125, 0000002764, 49, '10:00-07:00', '2021-12-22 19:20:58', '2022-01-11 16:13:01'); -INSERT INTO `tb_shop` VALUES (6, '幸福里老北京涮锅(丝联店)', 1, 'https://img.meituan.net/msmerchant/e71a2d0d693b3033c15522c43e03f09198239.jpg,https://img.meituan.net/msmerchant/9f8a966d60ffba00daf35458522273ca658239.jpg,https://img.meituan.net/msmerchant/ef9ca5ef6c05d381946fe4a9aa7d9808554502.jpg', '拱宸桥/上塘', '金华南路189号丝联166号', 120.148603, 30.318618, 130, 0000009531, 0000007324, 46, '11:00-13:50,17:00-20:50', '2021-12-22 19:24:53', '2022-01-11 16:13:09'); -INSERT INTO `tb_shop` VALUES (7, '炉鱼(拱墅万达广场店)', 1, 'https://img.meituan.net/msmerchant/909434939a49b36f340523232924402166854.jpg,https://img.meituan.net/msmerchant/32fd2425f12e27db0160e837461c10303700032.jpg,https://img.meituan.net/msmerchant/f7022258ccb8dabef62a0514d3129562871160.jpg', '北部新城', '杭行路666号万达商业中心4幢2单元409室(铺位号4005)', 120.124691, 30.336819, 85, 0000002631, 0000001320, 47, '00:00-24:00', '2021-12-22 19:40:52', '2022-01-11 16:13:19'); -INSERT INTO `tb_shop` VALUES (8, '浅草屋寿司(运河上街店)', 1, 'https://img.meituan.net/msmerchant/cf3dff697bf7f6e11f4b79c4e7d989e4591290.jpg,https://img.meituan.net/msmerchant/0b463f545355c8d8f021eb2987dcd0c8567811.jpg,https://img.meituan.net/msmerchant/c3c2516939efaf36c4ccc64b0e629fad587907.jpg', '运河上街', '拱墅区金华路80号运河上街B1', 120.150526, 30.325231, 88, 0000002406, 0000001206, 46, ' 11:00-21:30', '2021-12-22 19:51:06', '2022-01-11 16:13:25'); -INSERT INTO `tb_shop` VALUES (9, '羊老三羊蝎子牛仔排北派炭火锅(运河上街店)', 1, 'https://p0.meituan.net/biztone/163160492_1624251899456.jpeg,https://img.meituan.net/msmerchant/e478eb16f7e31a7f8b29b5e3bab6de205500837.jpg,https://img.meituan.net/msmerchant/6173eb1d18b9d70ace7fdb3f2dd939662884857.jpg', '运河上街', '台州路2号运河上街购物中心F5', 120.150598, 30.325251, 101, 0000002763, 0000001363, 44, '11:00-21:30', '2021-12-22 19:53:59', '2022-01-11 16:13:34'); -INSERT INTO `tb_shop` VALUES (10, '开乐迪KTV(运河上街店)', 2, 'https://p0.meituan.net/joymerchant/a575fd4adb0b9099c5c410058148b307-674435191.jpg,https://p0.meituan.net/merchantpic/68f11bf850e25e437c5f67decfd694ab2541634.jpg,https://p0.meituan.net/dpdeal/cb3a12225860ba2875e4ea26c6d14fcc197016.jpg', '运河上街', '台州路2号运河上街购物中心F4', 120.149093, 30.324666, 67, 0000026891, 0000000902, 37, '00:00-24:00', '2021-12-22 20:25:16', '2021-12-22 20:25:16'); -INSERT INTO `tb_shop` VALUES (11, 'INLOVE KTV(水晶城店)', 2, 'https://p0.meituan.net/dpmerchantpic/53e74b200211d68988a4f02ae9912c6c1076826.jpg,https://qcloud.dpfile.com/pc/4iWtIvzLzwM2MGgyPu1PCDb4SWEaKqUeHm--YAt1EwR5tn8kypBcqNwHnjg96EvT_Gd2X_f-v9T8Yj4uLt25Gg.jpg,https://qcloud.dpfile.com/pc/WZsJWRI447x1VG2x48Ujgu7vwqksi_9WitdKI4j3jvIgX4MZOpGNaFtM93oSSizbGybIjx5eX6WNgCPvcASYAw.jpg', '水晶城', '上塘路458号水晶城购物中心6层', 120.15853, 30.310002, 75, 0000035977, 0000005684, 47, '11:30-06:00', '2021-12-22 20:29:02', '2021-12-22 20:39:00'); -INSERT INTO `tb_shop` VALUES (12, '魅(杭州远洋乐堤港店)', 2, 'https://p0.meituan.net/dpmerchantpic/63833f6ba0393e2e8722420ef33f3d40466664.jpg,https://p0.meituan.net/dpmerchantpic/ae3c94cc92c529c4b1d7f68cebed33fa105810.png,', '远洋乐堤港', '丽水路58号远洋乐堤港F4', 120.14983, 30.31211, 88, 0000006444, 0000000235, 46, '10:00-02:00', '2021-12-22 20:34:34', '2021-12-22 20:34:34'); -INSERT INTO `tb_shop` VALUES (13, '讴K拉量贩KTV(北城天地店)', 2, 'https://p1.meituan.net/merchantpic/598c83a8c0d06fe79ca01056e214d345875600.jpg,https://qcloud.dpfile.com/pc/HhvI0YyocYHRfGwJWqPQr34hRGRl4cWdvlNwn3dqghvi4WXlM2FY1te0-7pE3Wb9_Gd2X_f-v9T8Yj4uLt25Gg.jpg,https://qcloud.dpfile.com/pc/F5ZVzZaXFE27kvQzPnaL4V8O9QCpVw2nkzGrxZE8BqXgkfyTpNExfNG5CEPQX4pjGybIjx5eX6WNgCPvcASYAw.jpg', 'D32天阳购物中心', '湖州街567号北城天地5层', 120.130453, 30.327655, 58, 0000018997, 0000001857, 41, '12:00-02:00', '2021-12-22 20:38:54', '2021-12-22 20:40:04'); -INSERT INTO `tb_shop` VALUES (14, '星聚会KTV(拱墅区万达店)', 2, 'https://p0.meituan.net/dpmerchantpic/f4cd6d8d4eb1959c3ea826aa05a552c01840451.jpg,https://p0.meituan.net/dpmerchantpic/2efc07aed856a8ab0fc75c86f4b9b0061655777.jpg,https://qcloud.dpfile.com/pc/zWfzzIorCohKT0bFwsfAlHuayWjI6DBEMPHHncmz36EEMU9f48PuD9VxLLDAjdoU_Gd2X_f-v9T8Yj4uLt25Gg.jpg', '北部新城', '杭行路666号万达广场C座1-2F', 120.128958, 30.337252, 60, 0000017771, 0000000685, 47, '10:00-22:00', '2021-12-22 20:48:54', '2021-12-22 20:48:54'); - --- ---------------------------- --- Table structure for tb_shop_type --- ---------------------------- -DROP TABLE IF EXISTS `tb_shop_type`; -CREATE TABLE `tb_shop_type` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型名称', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标', - `sort` int(3) UNSIGNED NULL DEFAULT NULL COMMENT '顺序', - `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_shop_type --- ---------------------------- -INSERT INTO `tb_shop_type` VALUES (1, '美食', '/types/ms.png', 1, '2021-12-22 20:17:47', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (2, 'KTV', '/types/KTV.png', 2, '2021-12-22 20:18:27', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (3, '丽人·美发', '/types/lrmf.png', 3, '2021-12-22 20:18:48', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (4, '健身运动', '/types/jsyd.png', 10, '2021-12-22 20:19:04', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (5, '按摩·足疗', '/types/amzl.png', 5, '2021-12-22 20:19:27', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (6, '美容SPA', '/types/spa.png', 6, '2021-12-22 20:19:35', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (7, '亲子游乐', '/types/qzyl.png', 7, '2021-12-22 20:19:53', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (8, '酒吧', '/types/jiuba.png', 8, '2021-12-22 20:20:02', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (9, '轰趴馆', '/types/hpg.png', 9, '2021-12-22 20:20:08', '2021-12-23 11:24:31'); -INSERT INTO `tb_shop_type` VALUES (10, '美睫·美甲', '/types/mjmj.png', 4, '2021-12-22 20:21:46', '2021-12-23 11:24:31'); - --- ---------------------------- --- Table structure for tb_sign --- ---------------------------- -DROP TABLE IF EXISTS `tb_sign`; -CREATE TABLE `tb_sign` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', - `year` year NOT NULL COMMENT '签到的年', - `month` tinyint(2) NOT NULL COMMENT '签到的月', - `date` date NOT NULL COMMENT '签到的日期', - `is_backup` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '是否补签', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_sign --- ---------------------------- - --- ---------------------------- --- Table structure for tb_user --- ---------------------------- -DROP TABLE IF EXISTS `tb_user`; -CREATE TABLE `tb_user` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号码', - `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码,加密存储', - `nick_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '昵称,默认是用户id', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '人物头像', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uniqe_key_phone`(`phone`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1010 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_user --- ---------------------------- -INSERT INTO `tb_user` VALUES (1, '13686869696', '', '小鱼同学', '/imgs/blogs/blog1.jpg', '2021-12-24 10:27:19', '2022-01-11 16:04:00'); -INSERT INTO `tb_user` VALUES (2, '13838411438', '', '可可今天不吃肉', '/imgs/icons/kkjtbcr.jpg', '2021-12-24 15:14:39', '2021-12-28 19:58:04'); -INSERT INTO `tb_user` VALUES (4, '13456789011', '', 'user_slxaxy2au9f3tanffaxr', '', '2022-01-07 12:07:53', '2022-01-07 12:07:53'); -INSERT INTO `tb_user` VALUES (5, '13456789001', '', '可爱多', '/imgs/icons/user5-icon.png', '2022-01-07 16:11:33', '2022-03-11 09:09:20'); -INSERT INTO `tb_user` VALUES (6, '13456762069', '', 'user_xn5wr3hpsv', '', '2022-02-07 17:54:10', '2022-02-07 17:54:10'); -INSERT INTO `tb_user` VALUES (10, '13688668889', '', 'user_88arndojw9', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (11, '13688668890', '', 'user_qcfr2k1lmi', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (12, '13688668891', '', 'user_ffsk4hli07', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (13, '13688668892', '', 'user_r62q62ijef', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (14, '13688668893', '', 'user_f3rymyt1q5', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (15, '13688668894', '', 'user_hnyhc3mjat', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (16, '13688668895', '', 'user_2spo35f5rl', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (17, '13688668896', '', 'user_q3r70baqe1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (18, '13688668897', '', 'user_v73ottjqxt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (19, '13688668898', '', 'user_tmh8o4r11q', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (20, '13688668899', '', 'user_4epgb7b5u1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (21, '13688668900', '', 'user_g474zoujxj', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (22, '13688668901', '', 'user_r3kh1g6aah', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (23, '13688668902', '', 'user_u3uuo7l5fo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (24, '13688668903', '', 'user_9o93lbsojt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (25, '13688668904', '', 'user_jbhmr43wpq', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (26, '13688668905', '', 'user_nevyd3c5ux', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (27, '13688668906', '', 'user_oow4frmjp3', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (28, '13688668907', '', 'user_cvmknmec74', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (29, '13688668908', '', 'user_0t2x5njbz7', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (30, '13688668909', '', 'user_y5x09783hp', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (31, '13688668910', '', 'user_owe4eyuhhh', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (32, '13688668911', '', 'user_j76auh0ggg', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (33, '13688668912', '', 'user_aal5w9rm33', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (34, '13688668913', '', 'user_a2pgu8cr21', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (35, '13688668914', '', 'user_nle60p846v', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (36, '13688668915', '', 'user_w1mck7c7yv', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (37, '13688668916', '', 'user_bnpiybumlk', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (38, '13688668917', '', 'user_4w7xeo2yyt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (39, '13688668918', '', 'user_99u4voj7xl', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (40, '13688668919', '', 'user_g03is27pd6', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (41, '13688668920', '', 'user_3j9erfkl0p', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (42, '13688668921', '', 'user_l7rs56ah9y', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (43, '13688668922', '', 'user_p3655ctliy', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (44, '13688668923', '', 'user_qi1qze1yp1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (45, '13688668924', '', 'user_vrd5ir0rj0', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (46, '13688668925', '', 'user_tubboh1byc', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (47, '13688668926', '', 'user_j2bdj3d2eo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (48, '13688668927', '', 'user_ncj7r0vu1h', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (49, '13688668928', '', 'user_63rhqjqa0a', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (50, '13688668929', '', 'user_80ue5cywnk', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (51, '13688668930', '', 'user_j4q037vhpi', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (52, '13688668931', '', 'user_ms0uat5bf0', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (53, '13688668932', '', 'user_oqep16bdel', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (54, '13688668933', '', 'user_vjtvjjdqh7', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (55, '13688668934', '', 'user_0168i9hv5g', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (56, '13688668935', '', 'user_vh1j6zw1q4', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (57, '13688668936', '', 'user_rkf2nxouof', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (58, '13688668937', '', 'user_whlt2chtv3', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (59, '13688668938', '', 'user_lpqr90wbeo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (60, '13688668939', '', 'user_h40y3ipk9k', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); -INSERT INTO `tb_user` VALUES (61, '13688668940', '', 'user_awdqkmbkt7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (62, '13688668941', '', 'user_1xgbg9v4r5', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (63, '13688668942', '', 'user_7vf5fgiu68', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (64, '13688668943', '', 'user_lsgiz015vf', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (65, '13688668944', '', 'user_0nqjvanruk', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (66, '13688668945', '', 'user_8alg1taath', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (67, '13688668946', '', 'user_q45ykjgpxe', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (68, '13688668947', '', 'user_4hy0o6ir0r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (69, '13688668948', '', 'user_q6rh7e6zo9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (70, '13688668949', '', 'user_1wp3ygfyn2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (71, '13688668950', '', 'user_13vjvo6flp', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (72, '13688668951', '', 'user_glyshbbwin', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (73, '13688668952', '', 'user_3ewzgsnhzj', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (74, '13688668953', '', 'user_ky481zf1fs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (75, '13688668954', '', 'user_o5yzu0epev', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (76, '13688668955', '', 'user_ycbracmsi3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (77, '13688668956', '', 'user_974wwi1283', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (78, '13688668957', '', 'user_1y0xokmk9w', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (79, '13688668958', '', 'user_nd74cho3tu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (80, '13688668959', '', 'user_5z7u2eysa4', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (81, '13688668960', '', 'user_yvf8hfu5yy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (82, '13688668961', '', 'user_2poi4wvpms', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (83, '13688668962', '', 'user_v4ysxjt1yu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (84, '13688668963', '', 'user_kbvn4gpgk6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (85, '13688668964', '', 'user_23niik1tyg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (86, '13688668965', '', 'user_uf2zz6ispe', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (87, '13688668966', '', 'user_5k19vf7c4o', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (88, '13688668967', '', 'user_5ahdd98xbr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (89, '13688668968', '', 'user_a5cnfnoopx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (90, '13688668969', '', 'user_utnmcyfg13', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (91, '13688668970', '', 'user_0k6n8ikb95', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (92, '13688668971', '', 'user_zqk5maqtmi', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (93, '13688668972', '', 'user_9i9suwd3nd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (94, '13688668973', '', 'user_u0y0ngrdjo', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (95, '13688668974', '', 'user_stvijjwvzu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (96, '13688668975', '', 'user_7if7tttays', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (97, '13688668976', '', 'user_f9hmz0ngdu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (98, '13688668977', '', 'user_wuhs2nq9d0', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (99, '13688668978', '', 'user_1u3rlntd5s', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (100, '13688668979', '', 'user_ywe62vhu7u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (101, '13688668980', '', 'user_rbfpzdt6tg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (102, '13688668981', '', 'user_jv69l0d1kg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (103, '13688668982', '', 'user_dg6hwl48r6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (104, '13688668983', '', 'user_8rwl92pixr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (105, '13688668984', '', 'user_k5dek2os3m', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (106, '13688668985', '', 'user_kw1nr2scyz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (107, '13688668986', '', 'user_h81c5g0t7s', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (108, '13688668987', '', 'user_jar6djas5e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (109, '13688668988', '', 'user_f9x2qm4grh', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (110, '13688668989', '', 'user_mg5h6c4bcu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (111, '13688668990', '', 'user_hcg7ocbnus', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (112, '13688668991', '', 'user_rsbxx7g2yz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (113, '13688668992', '', 'user_bi3fhutbd1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (114, '13688668993', '', 'user_o4pjkkyu3q', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (115, '13688668994', '', 'user_7zfs7g5vqb', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (116, '13688668995', '', 'user_oq71inq541', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (117, '13688668996', '', 'user_u9zoiadq6l', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (118, '13688668997', '', 'user_4elguvu5pz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (119, '13688668998', '', 'user_90dclmdv94', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (120, '13688668999', '', 'user_v2of3k1liq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (121, '13688669000', '', 'user_bg04b99iqn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (122, '13688669001', '', 'user_6fo9sul3q6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (123, '13688669002', '', 'user_vl7ajjlhnn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (124, '13688669003', '', 'user_df3kaj5zi1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (125, '13688669004', '', 'user_yo6iohe5s2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (126, '13688669005', '', 'user_2iss3wrcm1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (127, '13688669006', '', 'user_7y8qm8sv4r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (128, '13688669007', '', 'user_f825rhknpq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (129, '13688669008', '', 'user_3bigm0aauz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (130, '13688669009', '', 'user_ib9eo5dtgk', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (131, '13688669010', '', 'user_ci5hhnufj9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (132, '13688669011', '', 'user_cc56u62rny', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (133, '13688669012', '', 'user_i8fg7azvnt', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (134, '13688669013', '', 'user_bw5dqkv6d9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (135, '13688669014', '', 'user_1n1o9ri5oz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (136, '13688669015', '', 'user_1b0zexoldy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (137, '13688669016', '', 'user_lz9dr6wxkw', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (138, '13688669017', '', 'user_zfpfscu53e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (139, '13688669018', '', 'user_5kldn59nn9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (140, '13688669019', '', 'user_p0mjswjh9x', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (141, '13688669020', '', 'user_z4jcqggm11', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (142, '13688669021', '', 'user_pv9yctbxza', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (143, '13688669022', '', 'user_u702tikvol', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (144, '13688669023', '', 'user_sy4a5f3qmy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (145, '13688669024', '', 'user_n6g293r60l', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (146, '13688669025', '', 'user_uylyp6ttqz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (147, '13688669026', '', 'user_h2zmzefha3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (148, '13688669027', '', 'user_5outop6hz2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (149, '13688669028', '', 'user_vp8l74sadq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (150, '13688669029', '', 'user_n9ww3of8fg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (151, '13688669030', '', 'user_rfm7pfgkv8', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (152, '13688669031', '', 'user_h7298xuo0u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (153, '13688669032', '', 'user_72s0smb2wz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (154, '13688669033', '', 'user_twhphih9nd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (155, '13688669034', '', 'user_vfocakn5gl', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (156, '13688669035', '', 'user_tfwe1v2x82', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (157, '13688669036', '', 'user_eyrq375qgg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (158, '13688669037', '', 'user_rg2obilrot', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (159, '13688669038', '', 'user_rzfwln2aw2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (160, '13688669039', '', 'user_rzfgzeshe1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (161, '13688669040', '', 'user_c67s0sjbmv', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (162, '13688669041', '', 'user_fkyp652kkn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (163, '13688669042', '', 'user_sv1i552okx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (164, '13688669043', '', 'user_fsrmh6e0d3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (165, '13688669044', '', 'user_jey7gkjesn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (166, '13688669045', '', 'user_00xdq55r0f', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (167, '13688669046', '', 'user_wkb6tveg4e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (168, '13688669047', '', 'user_51ong6aunx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (169, '13688669048', '', 'user_ke4h0uxthm', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (170, '13688669049', '', 'user_oswyb9opx5', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (171, '13688669050', '', 'user_iy8itbwg6q', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (172, '13688669051', '', 'user_g1mk023p9r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (173, '13688669052', '', 'user_2507p7kvzs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (174, '13688669053', '', 'user_piixbanfxl', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (175, '13688669054', '', 'user_w2d2is43jc', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (176, '13688669055', '', 'user_lrk4it56lt', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (177, '13688669056', '', 'user_3273q3j2ft', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (178, '13688669057', '', 'user_ltf42q0vy4', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (179, '13688669058', '', 'user_7npp13snqp', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (180, '13688669059', '', 'user_slxftqmjp9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (181, '13688669060', '', 'user_il4dsuvdfr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (182, '13688669061', '', 'user_esm2d4uh7a', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (183, '13688669062', '', 'user_te4prs2y3j', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (184, '13688669063', '', 'user_dycwcufgj0', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (185, '13688669064', '', 'user_jjo4dvsgag', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (186, '13688669065', '', 'user_9opl0t1sd2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (187, '13688669066', '', 'user_hbm1dnssq6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (188, '13688669067', '', 'user_tx88zar5cs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (189, '13688669068', '', 'user_1p206nyupm', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (190, '13688669069', '', 'user_8lnbd2ao5u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (191, '13688669070', '', 'user_v4uwls1wg7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (192, '13688669071', '', 'user_z1bkh9lnjj', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (193, '13688669072', '', 'user_r7u852ex1n', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (194, '13688669073', '', 'user_yqr54gdh8t', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (195, '13688669074', '', 'user_x4kngjjng7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (196, '13688669075', '', 'user_xvtxjocno2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (197, '13688669076', '', 'user_1zj77q03tf', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (198, '13688669077', '', 'user_0q8yjtlp7a', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (199, '13688669078', '', 'user_nt2ogdyl73', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (200, '13688669079', '', 'user_6w0ex6afsz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (201, '13688669080', '', 'user_qpm2vyflc3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (202, '13688669081', '', 'user_dzvf9xujj1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (203, '13688669082', '', 'user_aiypeaeupd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (204, '13688669083', '', 'user_5iznj0t5hg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (205, '13688669084', '', 'user_4t1flvqz2h', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (206, '13688669085', '', 'user_542t36rd41', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (207, '13688669086', '', 'user_kmhowbydu6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (208, '13688669087', '', 'user_e8nz64jbym', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (209, '13688669088', '', 'user_zjbr3zq6we', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (210, '13688669089', '', 'user_ptk6qaspna', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (211, '13688669090', '', 'user_jei7tqtu1j', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (212, '13688669091', '', 'user_8x7cyv5ey8', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (213, '13688669092', '', 'user_mx3l4tj2jq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (214, '13688669093', '', 'user_ba6e9l6exg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); -INSERT INTO `tb_user` VALUES (215, '13688669094', '', 'user_vlku3rop6e', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (216, '13688669095', '', 'user_hsff9net6q', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (217, '13688669096', '', 'user_mbaficnzfe', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (218, '13688669097', '', 'user_b3wglh40dk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (219, '13688669098', '', 'user_dvi1yllk48', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (220, '13688669099', '', 'user_cxv8smu642', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (221, '13688669100', '', 'user_ze5exti1z5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (222, '13688669101', '', 'user_b6524nuosz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (223, '13688669102', '', 'user_jw3xmz31ss', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (224, '13688669103', '', 'user_3fqrglyqj0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (225, '13688669104', '', 'user_uf9dy1kfmg', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (226, '13688669105', '', 'user_nn4ss4oupv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (227, '13688669106', '', 'user_khse5vlch8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (228, '13688669107', '', 'user_xfpqrk3hea', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (229, '13688669108', '', 'user_0sfyf9o74l', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (230, '13688669109', '', 'user_936vlojcwy', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (231, '13688669110', '', 'user_wq9m8aqmay', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (232, '13688669111', '', 'user_uqw0c5ilp5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (233, '13688669112', '', 'user_qjucgt4ar1', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (234, '13688669113', '', 'user_sry5bqf8ev', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (235, '13688669114', '', 'user_9csdwveeh8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (236, '13688669115', '', 'user_y9kl1yd7fk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (237, '13688669116', '', 'user_mahwf66irm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (238, '13688669117', '', 'user_tud2i4itlr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (239, '13688669118', '', 'user_p1s640kfny', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (240, '13688669119', '', 'user_2tyzfj49r6', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (241, '13688669120', '', 'user_wjswilvpou', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (242, '13688669121', '', 'user_yuushg7x44', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (243, '13688669122', '', 'user_pb0fas6tob', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (244, '13688669123', '', 'user_3k4nn4dhuh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (245, '13688669124', '', 'user_lljtt3ttml', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (246, '13688669125', '', 'user_weftqlsasg', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (247, '13688669126', '', 'user_1lo78exvpl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (248, '13688669127', '', 'user_qzbukb32cm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (249, '13688669128', '', 'user_k80i5kfvoj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (250, '13688669129', '', 'user_ggx53ve2zp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (251, '13688669130', '', 'user_yz0fmlzjxv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (252, '13688669131', '', 'user_jh6epyjgiw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (253, '13688669132', '', 'user_0k0ly383fy', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (254, '13688669133', '', 'user_ibc8pgs2jc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (255, '13688669134', '', 'user_ys8yxdm6cr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (256, '13688669135', '', 'user_7zdagyyymi', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (257, '13688669136', '', 'user_9q7fiiqwzm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (258, '13688669137', '', 'user_64qzvesiku', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (259, '13688669138', '', 'user_5fi8fsc9e5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (260, '13688669139', '', 'user_1wo4aktp89', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (261, '13688669140', '', 'user_5mis2rucuh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (262, '13688669141', '', 'user_pghkcw4cog', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (263, '13688669142', '', 'user_ymh7a5t69k', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (264, '13688669143', '', 'user_58qypl26r3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (265, '13688669144', '', 'user_oknszihfil', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (266, '13688669145', '', 'user_rx5qu0277b', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (267, '13688669146', '', 'user_4mwekx3q8z', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (268, '13688669147', '', 'user_ie9qzfwu27', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (269, '13688669148', '', 'user_l80r6phxur', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (270, '13688669149', '', 'user_np6iqqeuql', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (271, '13688669150', '', 'user_5c27qgw2o3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (272, '13688669151', '', 'user_ujpa6juatc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (273, '13688669152', '', 'user_van4fds7cx', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (274, '13688669153', '', 'user_ox11o9krp9', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (275, '13688669154', '', 'user_c7o3u0usf2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (276, '13688669155', '', 'user_cq7hojlerq', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (277, '13688669156', '', 'user_kphis0ntao', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (278, '13688669157', '', 'user_nd12v2tdpj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (279, '13688669158', '', 'user_5far04rjm0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (280, '13688669159', '', 'user_f33abomjs2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (281, '13688669160', '', 'user_1qty1oyawt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (282, '13688669161', '', 'user_9l463o7me2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (283, '13688669162', '', 'user_0seyfs8ou8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (284, '13688669163', '', 'user_7uhqt2zf11', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (285, '13688669164', '', 'user_wy2jtbkr1t', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (286, '13688669165', '', 'user_yjf1kbl6r8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (287, '13688669166', '', 'user_r98pel35gn', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (288, '13688669167', '', 'user_u2eg1jcwvz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (289, '13688669168', '', 'user_5z7d4fr9ye', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (290, '13688669169', '', 'user_kl0p0ku6zv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (291, '13688669170', '', 'user_dsdocfa64r', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (292, '13688669171', '', 'user_gbygsd03kc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (293, '13688669172', '', 'user_dj1xqos2is', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (294, '13688669173', '', 'user_il6yctz040', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (295, '13688669174', '', 'user_y4zn043gvj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (296, '13688669175', '', 'user_oh9tjoxq8c', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (297, '13688669176', '', 'user_6xlq088asi', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (298, '13688669177', '', 'user_0sepghh66s', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (299, '13688669178', '', 'user_dzo7q333x7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (300, '13688669179', '', 'user_n7j3j68agt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (301, '13688669180', '', 'user_b99vc3qr3d', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (302, '13688669181', '', 'user_o2uu01ngfw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (303, '13688669182', '', 'user_q0yy8pvku3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (304, '13688669183', '', 'user_lipi4iyiv9', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (305, '13688669184', '', 'user_x2dq9i90ms', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (306, '13688669185', '', 'user_bz9twrcx01', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (307, '13688669186', '', 'user_iun0ocev18', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (308, '13688669187', '', 'user_uob3pxr062', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (309, '13688669188', '', 'user_nxuwi8q3n5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (310, '13688669189', '', 'user_g6si4hwe4r', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (311, '13688669190', '', 'user_v4xud6pxnh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (312, '13688669191', '', 'user_n3vq5a4c49', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (313, '13688669192', '', 'user_6qdfn8dkja', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (314, '13688669193', '', 'user_872mdw0ibu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (315, '13688669194', '', 'user_s426pmlnno', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (316, '13688669195', '', 'user_n7d3fcnlqf', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (317, '13688669196', '', 'user_d1euhpgvjt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (318, '13688669197', '', 'user_luwqlqye4n', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (319, '13688669198', '', 'user_m9khstqle0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (320, '13688669199', '', 'user_7u54hoeh5p', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (321, '13688669200', '', 'user_hndxi8iyg7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (322, '13688669201', '', 'user_csagq8b16v', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (323, '13688669202', '', 'user_sa979r5vfr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (324, '13688669203', '', 'user_gojbeoieko', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (325, '13688669204', '', 'user_vrxmccmk36', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (326, '13688669205', '', 'user_kwzzzxile8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (327, '13688669206', '', 'user_8ik6wmzcs3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (328, '13688669207', '', 'user_x9f4po6eok', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (329, '13688669208', '', 'user_vn0g3rywt0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (330, '13688669209', '', 'user_0h0hqnoqvv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (331, '13688669210', '', 'user_ne3rvn4cim', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (332, '13688669211', '', 'user_bz20tomja0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (333, '13688669212', '', 'user_7k5d8324tm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (334, '13688669213', '', 'user_5va74it1op', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (335, '13688669214', '', 'user_gc21xkfgph', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (336, '13688669215', '', 'user_rv1o0ousua', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (337, '13688669216', '', 'user_lkp3hk0t8q', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (338, '13688669217', '', 'user_e2kjjqo7ee', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (339, '13688669218', '', 'user_ja24gfl42z', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (340, '13688669219', '', 'user_5sxrarxxd2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (341, '13688669220', '', 'user_lzilfx23jr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (342, '13688669221', '', 'user_4healeh2sq', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (343, '13688669222', '', 'user_txh60qz6xe', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (344, '13688669223', '', 'user_ofie8fobtu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (345, '13688669224', '', 'user_wxfngmqndc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (346, '13688669225', '', 'user_n11kdqn95y', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (347, '13688669226', '', 'user_7b9etto6jl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (348, '13688669227', '', 'user_sa23n9pacw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (349, '13688669228', '', 'user_1lhe46upfz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (350, '13688669229', '', 'user_jioft4gdiu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (351, '13688669230', '', 'user_jta7ld4vty', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (352, '13688669231', '', 'user_5tkaejhk7g', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (353, '13688669232', '', 'user_fkoe771g9p', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (354, '13688669233', '', 'user_snv802ujrx', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (355, '13688669234', '', 'user_4szkwdl3hw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (356, '13688669235', '', 'user_qq4cteo33l', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (357, '13688669236', '', 'user_hwn4ofw0dp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (358, '13688669237', '', 'user_2r4xhcvxp2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (359, '13688669238', '', 'user_iphgurk3nk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (360, '13688669239', '', 'user_ih9kbl5kzb', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (361, '13688669240', '', 'user_2odlf3rqex', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (362, '13688669241', '', 'user_i9jalo3ouw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (363, '13688669242', '', 'user_whbqd8vhr2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (364, '13688669243', '', 'user_bzlvvy10mp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (365, '13688669244', '', 'user_pe7y2zyii7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (366, '13688669245', '', 'user_cnk071ghc7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (367, '13688669246', '', 'user_21cue7tpm0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (368, '13688669247', '', 'user_nidneujm1x', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (369, '13688669248', '', 'user_tx2y3v0pb0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (370, '13688669249', '', 'user_i8ikz0nufr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (371, '13688669250', '', 'user_omq8bsw2ij', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (372, '13688669251', '', 'user_ffpuo977gj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (373, '13688669252', '', 'user_jcgx7mukv0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (374, '13688669253', '', 'user_gn6k43jfx8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (375, '13688669254', '', 'user_esfv726lun', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (376, '13688669255', '', 'user_l7vh3qyhnk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (377, '13688669256', '', 'user_aqo9nsp13v', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (378, '13688669257', '', 'user_45z1cjwo34', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (379, '13688669258', '', 'user_cukuugiquc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (380, '13688669259', '', 'user_cmzben5ql1', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (381, '13688669260', '', 'user_fm136hckhd', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (382, '13688669261', '', 'user_4neww35d6t', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (383, '13688669262', '', 'user_p4e2t04dl0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (384, '13688669263', '', 'user_3s22mzjlgl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (385, '13688669264', '', 'user_kf0pbo00lp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (386, '13688669265', '', 'user_7tan2lj2jn', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); -INSERT INTO `tb_user` VALUES (387, '13688669266', '', 'user_w88q6nof2r', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (388, '13688669267', '', 'user_9aze983wkj', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (389, '13688669268', '', 'user_wtioxpbho1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (390, '13688669269', '', 'user_yf70g0cjfu', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (391, '13688669270', '', 'user_i1w18vru0l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (392, '13688669271', '', 'user_6lr3w5npe5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (393, '13688669272', '', 'user_9n8rjbb9gp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (394, '13688669273', '', 'user_fe3u4g7p1f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (395, '13688669274', '', 'user_618vib46zb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (396, '13688669275', '', 'user_mj4b8uxpu3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (397, '13688669276', '', 'user_3jq7brld6h', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (398, '13688669277', '', 'user_8577262ob3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (399, '13688669278', '', 'user_x63u1e3sap', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (400, '13688669279', '', 'user_o2c2l1j9zs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (401, '13688669280', '', 'user_rtupie4qut', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (402, '13688669281', '', 'user_othsv0bkha', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (403, '13688669282', '', 'user_4wqa1vn3kw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (404, '13688669283', '', 'user_xmhuythdnn', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (405, '13688669284', '', 'user_alzyibl549', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (406, '13688669285', '', 'user_3nhqsa0htg', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (407, '13688669286', '', 'user_vn81ys9n64', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (408, '13688669287', '', 'user_iz6t7kpxz2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (409, '13688669288', '', 'user_7gnmjhg1rh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (410, '13688669289', '', 'user_r2i71mq5lk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (411, '13688669290', '', 'user_gevxv4bfda', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (412, '13688669291', '', 'user_hqneva0vaz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (413, '13688669292', '', 'user_8fvquxjm0t', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (414, '13688669293', '', 'user_9u8dxzs9nk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (415, '13688669294', '', 'user_8mwcrg9ez9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (416, '13688669295', '', 'user_erzqptr80b', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (417, '13688669296', '', 'user_97xgccgwaf', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (418, '13688669297', '', 'user_5rz6s0zuoh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (419, '13688669298', '', 'user_8o7cg6rp05', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (420, '13688669299', '', 'user_rhftetybs4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (421, '13688669300', '', 'user_mjh9uzi92z', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (422, '13688669301', '', 'user_bvaub566b3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (423, '13688669302', '', 'user_e97b0z12jc', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (424, '13688669303', '', 'user_mcc1pteaw5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (425, '13688669304', '', 'user_gz1ymib0dl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (426, '13688669305', '', 'user_owszpn6jem', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (427, '13688669306', '', 'user_nyqxiekdus', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (428, '13688669307', '', 'user_ilr27xnuxu', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (429, '13688669308', '', 'user_mhzftdfxi4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (430, '13688669309', '', 'user_kavgc8r8f6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (431, '13688669310', '', 'user_svztbpgr9w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (432, '13688669311', '', 'user_fdjhoysgy8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (433, '13688669312', '', 'user_drssks7627', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (434, '13688669313', '', 'user_53kuim78p1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (435, '13688669314', '', 'user_tpjaw9ygl6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (436, '13688669315', '', 'user_zlj9ao4lbw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (437, '13688669316', '', 'user_9nsckyz0k8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (438, '13688669317', '', 'user_rkyjx5n0k9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (439, '13688669318', '', 'user_e47mr17jmo', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (440, '13688669319', '', 'user_gdouwxu8bm', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (441, '13688669320', '', 'user_7odu05tcri', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (442, '13688669321', '', 'user_x6dga1y84j', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (443, '13688669322', '', 'user_ubzwoytroz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (444, '13688669323', '', 'user_brivojp5b1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (445, '13688669324', '', 'user_q5sluitgii', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (446, '13688669325', '', 'user_bbqazzzawl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (447, '13688669326', '', 'user_82fbd0oo0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (448, '13688669327', '', 'user_87ft14as7t', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (449, '13688669328', '', 'user_diabg787km', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (450, '13688669329', '', 'user_oo1gf0pxln', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (451, '13688669330', '', 'user_4fc1q8u2f3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (452, '13688669331', '', 'user_hgny53jwpn', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (453, '13688669332', '', 'user_5m75miuy6r', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (454, '13688669333', '', 'user_qx5ohjcayd', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (455, '13688669334', '', 'user_cff2zkpu62', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (456, '13688669335', '', 'user_dsb1rk9dsr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (457, '13688669336', '', 'user_50h3ylhjnz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (458, '13688669337', '', 'user_i02f5rjdab', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (459, '13688669338', '', 'user_3vwdqpif1l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (460, '13688669339', '', 'user_g6xewzg33w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (461, '13688669340', '', 'user_63u60u6o7f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (462, '13688669341', '', 'user_m6ikxcr92q', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (463, '13688669342', '', 'user_yzd5lmecur', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (464, '13688669343', '', 'user_m3163uc9al', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (465, '13688669344', '', 'user_1x6f94jq0v', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (466, '13688669345', '', 'user_keo0udy60g', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (467, '13688669346', '', 'user_87y52es2uw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (468, '13688669347', '', 'user_1zkkz9j0e6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (469, '13688669348', '', 'user_baznwk8x5q', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (470, '13688669349', '', 'user_b4hnhsmpxw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (471, '13688669350', '', 'user_1hr6wbd939', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (472, '13688669351', '', 'user_4w7dhr290a', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (473, '13688669352', '', 'user_tkxg6jo3xa', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (474, '13688669353', '', 'user_saosjqptnq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (475, '13688669354', '', 'user_wjge9hxzfv', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (476, '13688669355', '', 'user_8ex8ynmec4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (477, '13688669356', '', 'user_beih06msot', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (478, '13688669357', '', 'user_e4tuso2fad', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (479, '13688669358', '', 'user_iolxs2wbfs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (480, '13688669359', '', 'user_5trre9akf1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (481, '13688669360', '', 'user_y3l832hamq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (482, '13688669361', '', 'user_gs7kvt65y8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (483, '13688669362', '', 'user_8rda39nfpx', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (484, '13688669363', '', 'user_wix6t6g14l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (485, '13688669364', '', 'user_s2k023vtn7', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (486, '13688669365', '', 'user_qc3nhavb9f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (487, '13688669366', '', 'user_98eoecfe9s', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (488, '13688669367', '', 'user_kknik7xw80', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (489, '13688669368', '', 'user_17d7bifhpp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (490, '13688669369', '', 'user_04vbus432n', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (491, '13688669370', '', 'user_3e1xl0tvss', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (492, '13688669371', '', 'user_jpvv20rmfk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (493, '13688669372', '', 'user_51jd3tfl3e', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (494, '13688669373', '', 'user_agt44szvcb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (495, '13688669374', '', 'user_pr7icguenq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (496, '13688669375', '', 'user_2jl0qaecm0', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (497, '13688669376', '', 'user_m1fxzx8i0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (498, '13688669377', '', 'user_fh7a1j0vaz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (499, '13688669378', '', 'user_ty7afbm01v', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (500, '13688669379', '', 'user_bwazk1tt71', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (501, '13688669380', '', 'user_c1wrwmqzfi', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (502, '13688669381', '', 'user_nbfyg2pfql', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (503, '13688669382', '', 'user_h85lj9y0jy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (504, '13688669383', '', 'user_e0r5gg439j', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (505, '13688669384', '', 'user_k0s8h8v8wt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (506, '13688669385', '', 'user_0v423qhiz2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (507, '13688669386', '', 'user_zgze48neoq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (508, '13688669387', '', 'user_un4nppmh7k', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (509, '13688669388', '', 'user_knr2flv5mr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (510, '13688669389', '', 'user_cvhg3r8aqj', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (511, '13688669390', '', 'user_92xh46mlff', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (512, '13688669391', '', 'user_vhp8pxmhk6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (513, '13688669392', '', 'user_hc4c7z9y3k', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (514, '13688669393', '', 'user_03ikpqtn96', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (515, '13688669394', '', 'user_g0l23kj1ta', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (516, '13688669395', '', 'user_hdd1qkfbjy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (517, '13688669396', '', 'user_vmc478haq2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (518, '13688669397', '', 'user_g16kk9w1jp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (519, '13688669398', '', 'user_vlviloabak', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (520, '13688669399', '', 'user_f4t9c9x0qs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (521, '13688669400', '', 'user_uhd0vskqux', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (522, '13688669401', '', 'user_uidqqwety9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (523, '13688669402', '', 'user_ijqz4fb077', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (524, '13688669403', '', 'user_d16wfogt38', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (525, '13688669404', '', 'user_50cj7qxejp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (526, '13688669405', '', 'user_w0mawjfxbf', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (527, '13688669406', '', 'user_vihcs8gddy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (528, '13688669407', '', 'user_1io84j51kb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (529, '13688669408', '', 'user_sac23jn0ct', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (530, '13688669409', '', 'user_84saoi0eaq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (531, '13688669410', '', 'user_bqfd0lusff', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (532, '13688669411', '', 'user_a717jzadbk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (533, '13688669412', '', 'user_3e6nd805yp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (534, '13688669413', '', 'user_bgkv3zjjsy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (535, '13688669414', '', 'user_4lzfuo6hcl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (536, '13688669415', '', 'user_y748pleoq8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (537, '13688669416', '', 'user_ciyuki97of', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (538, '13688669417', '', 'user_kaulf89rnl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (539, '13688669418', '', 'user_h0dan7ux0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (540, '13688669419', '', 'user_fvmx4u2re0', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (541, '13688669420', '', 'user_njomftlkps', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (542, '13688669421', '', 'user_2ezx5lxtc4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (543, '13688669422', '', 'user_161mxzchbt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (544, '13688669423', '', 'user_f8e3enit63', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (545, '13688669424', '', 'user_j1ygvb30zr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (546, '13688669425', '', 'user_lskpl9geya', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (547, '13688669426', '', 'user_feww9njnhi', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (548, '13688669427', '', 'user_e8x6u5i9ca', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (549, '13688669428', '', 'user_17al8oqa4w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (550, '13688669429', '', 'user_nbo1m8bazt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (551, '13688669430', '', 'user_rqfyp2isyr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (552, '13688669431', '', 'user_epr1i52q5x', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (553, '13688669432', '', 'user_x154dr8sch', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (554, '13688669433', '', 'user_i5lvnupsu6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (555, '13688669434', '', 'user_qsnre265gc', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (556, '13688669435', '', 'user_7f3zwt1uso', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (557, '13688669436', '', 'user_qgkrbv1r7p', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (558, '13688669437', '', 'user_b39j58u8ql', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (559, '13688669438', '', 'user_wby0tn39v5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (560, '13688669439', '', 'user_9vt11wm6wb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (561, '13688669440', '', 'user_y4rokt5rzh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (562, '13688669441', '', 'user_lyarwzepjm', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (563, '13688669442', '', 'user_er844jel5s', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (564, '13688669443', '', 'user_2gkdrbu7rd', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (565, '13688669444', '', 'user_fnks15rgap', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (566, '13688669445', '', 'user_fe79dtlbf3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); -INSERT INTO `tb_user` VALUES (567, '13688669446', '', 'user_jrl1kdhopy', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (568, '13688669447', '', 'user_p5h5hfw0h5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (569, '13688669448', '', 'user_756lckggox', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (570, '13688669449', '', 'user_9w56lad204', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (571, '13688669450', '', 'user_kjfvuonq64', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (572, '13688669451', '', 'user_k1i16oya8x', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (573, '13688669452', '', 'user_z4wz2wq9oj', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (574, '13688669453', '', 'user_jotms6c1vz', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (575, '13688669454', '', 'user_29iu6j1olp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (576, '13688669455', '', 'user_rfkqpu7bs1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (577, '13688669456', '', 'user_yecqp8c38k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (578, '13688669457', '', 'user_1mbkrz4rng', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (579, '13688669458', '', 'user_bx6h4wu47y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (580, '13688669459', '', 'user_usub0nsxez', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (581, '13688669460', '', 'user_2vvxjpuwgr', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (582, '13688669461', '', 'user_9tmhy4nfm1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (583, '13688669462', '', 'user_q1gyjoatnm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (584, '13688669463', '', 'user_vaqe3soyoz', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (585, '13688669464', '', 'user_bz81fj51ul', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (586, '13688669465', '', 'user_pwp8w2oife', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (587, '13688669466', '', 'user_6i8a8jpc4a', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (588, '13688669467', '', 'user_e19oms872y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (589, '13688669468', '', 'user_7jnvjujuk5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (590, '13688669469', '', 'user_1brabvuxfp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (591, '13688669470', '', 'user_w25xjchkmt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (592, '13688669471', '', 'user_qc38678j1q', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (593, '13688669472', '', 'user_5wqfc087pg', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (594, '13688669473', '', 'user_l921wy6ghf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (595, '13688669474', '', 'user_qgdwy1c8ya', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (596, '13688669475', '', 'user_2ftowbar49', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (597, '13688669476', '', 'user_e0rqhfdde9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (598, '13688669477', '', 'user_vpswd32xps', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (599, '13688669478', '', 'user_ec479wdojq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (600, '13688669479', '', 'user_6kz95u775k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (601, '13688669480', '', 'user_iyyh1jdjvk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (602, '13688669481', '', 'user_jbv97r3zcf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (603, '13688669482', '', 'user_1t7nmmwx2g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (604, '13688669483', '', 'user_fb8j6mb1cn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (605, '13688669484', '', 'user_ld0b3fd8uk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (606, '13688669485', '', 'user_sv8tt0fhb0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (607, '13688669486', '', 'user_ovqhhaqzfs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (608, '13688669487', '', 'user_mdybbx800t', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (609, '13688669488', '', 'user_dy1n5yoxhv', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (610, '13688669489', '', 'user_xefu4y7d2d', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (611, '13688669490', '', 'user_4aun9z96dn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (612, '13688669491', '', 'user_guva8ofunq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (613, '13688669492', '', 'user_6l4gzaotnf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (614, '13688669493', '', 'user_ngbcy6a2zk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (615, '13688669494', '', 'user_dqqj7ti3pd', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (616, '13688669495', '', 'user_5zq4rzlbik', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (617, '13688669496', '', 'user_7e0qi512hf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (618, '13688669497', '', 'user_jpmnhzwesi', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (619, '13688669498', '', 'user_00xb9uvv0m', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (620, '13688669499', '', 'user_nxn2ldt3gl', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (621, '13688669500', '', 'user_cyd1a9zfqw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (622, '13688669501', '', 'user_0nhklq4xie', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (623, '13688669502', '', 'user_rtf3z1wptn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (624, '13688669503', '', 'user_ov4uix8csm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (625, '13688669504', '', 'user_lxi5i68cdf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (626, '13688669505', '', 'user_do1slgl1ph', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (627, '13688669506', '', 'user_qj8pbsjpl5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (628, '13688669507', '', 'user_ygrl56l48d', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (629, '13688669508', '', 'user_maynz9h3vn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (630, '13688669509', '', 'user_m7qnvuej5k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (631, '13688669510', '', 'user_ceg7kezzrd', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (632, '13688669511', '', 'user_v7ky9w9v6f', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (633, '13688669512', '', 'user_kk8rzbittq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (634, '13688669513', '', 'user_mskczihgi8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (635, '13688669514', '', 'user_0tmadlzf1j', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (636, '13688669515', '', 'user_oeui72807w', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (637, '13688669516', '', 'user_ad49besbbs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (638, '13688669517', '', 'user_huzzpviaax', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (639, '13688669518', '', 'user_b0p11t8qon', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (640, '13688669519', '', 'user_14k8fje63n', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (641, '13688669520', '', 'user_bl5rc085pr', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (642, '13688669521', '', 'user_938covh4nt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (643, '13688669522', '', 'user_olt9qfefvw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (644, '13688669523', '', 'user_bhkdwtkfdg', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (645, '13688669524', '', 'user_we6790rc8v', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (646, '13688669525', '', 'user_wqmiqbrj3a', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (647, '13688669526', '', 'user_ccdo9ncgzt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (648, '13688669527', '', 'user_pk3l58b3cf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (649, '13688669528', '', 'user_meqr7dxbog', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (650, '13688669529', '', 'user_x70v1uaf0g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (651, '13688669530', '', 'user_yijawdxi8k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (652, '13688669531', '', 'user_qlv8jnv927', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (653, '13688669532', '', 'user_2tkj1s7aex', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (654, '13688669533', '', 'user_5vbfw1gln6', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (655, '13688669534', '', 'user_zseyyi59z2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (656, '13688669535', '', 'user_8ch1tq5bfp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (657, '13688669536', '', 'user_gdgb5nbkqn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (658, '13688669537', '', 'user_rr5448qo4l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (659, '13688669538', '', 'user_e6zwifzqhw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (660, '13688669539', '', 'user_7ytv4vd6he', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (661, '13688669540', '', 'user_pc84newj49', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (662, '13688669541', '', 'user_h4wpk3e9ht', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (663, '13688669542', '', 'user_d3vt4vqim8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (664, '13688669543', '', 'user_eqr14mgaz2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (665, '13688669544', '', 'user_ldd4kzq961', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (666, '13688669545', '', 'user_w4qu1bb2lk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (667, '13688669546', '', 'user_0627bn8px3', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (668, '13688669547', '', 'user_64aj20cdf1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (669, '13688669548', '', 'user_l7u34b3ler', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (670, '13688669549', '', 'user_2ze9tl9994', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (671, '13688669550', '', 'user_m5phoejixm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (672, '13688669551', '', 'user_8ogdovuirm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (673, '13688669552', '', 'user_wfk4ebck83', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (674, '13688669553', '', 'user_oupbnni466', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (675, '13688669554', '', 'user_89967wcevq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (676, '13688669555', '', 'user_xr6g2q08cm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (677, '13688669556', '', 'user_m313bjckeq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (678, '13688669557', '', 'user_x25nq1ss14', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (679, '13688669558', '', 'user_jeidzxzp6y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (680, '13688669559', '', 'user_l7dkffo3n0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (681, '13688669560', '', 'user_pqio9ol2ln', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (682, '13688669561', '', 'user_k1cbsqi4gt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (683, '13688669562', '', 'user_p1i9b4p4sv', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (684, '13688669563', '', 'user_07yfm6qtl1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (685, '13688669564', '', 'user_y3mmmk1kak', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (686, '13688669565', '', 'user_lkxjnwtqa7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (687, '13688669566', '', 'user_v5w9pm18iq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (688, '13688669567', '', 'user_364l5poxpw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (689, '13688669568', '', 'user_trlfkptv3g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (690, '13688669569', '', 'user_rkheg82tnp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (691, '13688669570', '', 'user_5zmzrjgo5o', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (692, '13688669571', '', 'user_6uacx6cqhp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (693, '13688669572', '', 'user_wnats1phoj', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (694, '13688669573', '', 'user_dcm1w7674v', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (695, '13688669574', '', 'user_r7ik7ae272', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (696, '13688669575', '', 'user_xk77qyl4gl', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (697, '13688669576', '', 'user_989d1fsji4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (698, '13688669577', '', 'user_macs32vcct', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (699, '13688669578', '', 'user_z5mahfpa9r', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (700, '13688669579', '', 'user_tn1bnk3zir', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (701, '13688669580', '', 'user_95ajn6osry', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (702, '13688669581', '', 'user_qff1n375uc', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (703, '13688669582', '', 'user_gdjqlq4i6n', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (704, '13688669583', '', 'user_w6tsnpzfqn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (705, '13688669584', '', 'user_lqp4c4j2ch', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (706, '13688669585', '', 'user_1raii40ps1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (707, '13688669586', '', 'user_0r9izz201x', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (708, '13688669587', '', 'user_vlrp22q0rk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (709, '13688669588', '', 'user_f7kvbzb8i4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (710, '13688669589', '', 'user_yn8nntyyur', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (711, '13688669590', '', 'user_p58nxqajou', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (712, '13688669591', '', 'user_61msspy26k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (713, '13688669592', '', 'user_fqb0ch1hh1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (714, '13688669593', '', 'user_oyq3nszclx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (715, '13688669594', '', 'user_ggybvkn73t', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (716, '13688669595', '', 'user_po0gph6jgp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (717, '13688669596', '', 'user_hlzvh6wl1y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (718, '13688669597', '', 'user_btb024hqic', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (719, '13688669598', '', 'user_wqasvon847', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (720, '13688669599', '', 'user_rdp7fvaz3z', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (721, '13688669600', '', 'user_oh5q9kfkvc', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (722, '13688669601', '', 'user_ae21kmiles', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (723, '13688669602', '', 'user_b1ouyw3sww', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (724, '13688669603', '', 'user_9o5qz4s17l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (725, '13688669604', '', 'user_6urs1iwti9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (726, '13688669605', '', 'user_80pnfhyqyi', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (727, '13688669606', '', 'user_mynvmq4zcn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (728, '13688669607', '', 'user_q09fj27oc4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (729, '13688669608', '', 'user_v4e7hkfw63', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (730, '13688669609', '', 'user_x4sol5dj4f', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (731, '13688669610', '', 'user_v53dsicdtx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (732, '13688669611', '', 'user_fcoezs141i', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (733, '13688669612', '', 'user_viv3l4o52c', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (734, '13688669613', '', 'user_8j4m80dj76', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (735, '13688669614', '', 'user_r65xyt3opb', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (736, '13688669615', '', 'user_moi9x442th', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (737, '13688669616', '', 'user_qxkltii6ec', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (738, '13688669617', '', 'user_72vsybd20b', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (739, '13688669618', '', 'user_eai1g9ltu9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (740, '13688669619', '', 'user_h47ubi7f36', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (741, '13688669620', '', 'user_yxo46519hp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (742, '13688669621', '', 'user_499diayvwn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (743, '13688669622', '', 'user_ytomkocl3c', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (744, '13688669623', '', 'user_271mt5x5uo', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (745, '13688669624', '', 'user_h5s36mj609', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (746, '13688669625', '', 'user_sklzx3z3nq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (747, '13688669626', '', 'user_9v2ikjkwm8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (748, '13688669627', '', 'user_w5jjd49ipx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (749, '13688669628', '', 'user_3rzokm18yo', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (750, '13688669629', '', 'user_vm6zz6ejs7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (751, '13688669630', '', 'user_r494p0jlle', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (752, '13688669631', '', 'user_c50thdpyv0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (753, '13688669632', '', 'user_hc4qi0sfo2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (754, '13688669633', '', 'user_w8y4nebzxs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (755, '13688669634', '', 'user_mxxqu6isy9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (756, '13688669635', '', 'user_sd3f76mtg3', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (757, '13688669636', '', 'user_6zb026vsmm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (758, '13688669637', '', 'user_mzya91331l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (759, '13688669638', '', 'user_adu5gmym2g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (760, '13688669639', '', 'user_31bidh90w5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (761, '13688669640', '', 'user_iectlacbk7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (762, '13688669641', '', 'user_by8vl07035', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (763, '13688669642', '', 'user_n8ii3p3b6z', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (764, '13688669643', '', 'user_eopvczuyzq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); -INSERT INTO `tb_user` VALUES (765, '13688669644', '', 'user_2m36qy9yht', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (766, '13688669645', '', 'user_re1q80zze2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (767, '13688669646', '', 'user_lelhu217ad', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (768, '13688669647', '', 'user_dyv7ll1h9r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (769, '13688669648', '', 'user_7zws9wi4cp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (770, '13688669649', '', 'user_tvseis2smv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (771, '13688669650', '', 'user_975ls201ra', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (772, '13688669651', '', 'user_0416smxpjc', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (773, '13688669652', '', 'user_dkdw3wuvxt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (774, '13688669653', '', 'user_d1z5jtfh2g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (775, '13688669654', '', 'user_yg9r3ws35z', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (776, '13688669655', '', 'user_9cos7jzgmy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (777, '13688669656', '', 'user_679sq0b6eb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (778, '13688669657', '', 'user_kzk5m1pgqv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (779, '13688669658', '', 'user_28qetr02oe', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (780, '13688669659', '', 'user_peazcxx51i', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (781, '13688669660', '', 'user_roghf2lerp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (782, '13688669661', '', 'user_sth9xhgsoj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (783, '13688669662', '', 'user_38ejcd1npp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (784, '13688669663', '', 'user_m0y48rqbxs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (785, '13688669664', '', 'user_a0f919rrdw', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (786, '13688669665', '', 'user_veddhmnfa7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (787, '13688669666', '', 'user_ltexwx6bm6', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (788, '13688669667', '', 'user_euqn9si8dg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (789, '13688669668', '', 'user_wm4s4v0o87', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (790, '13688669669', '', 'user_mthbqaorve', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (791, '13688669670', '', 'user_k63cindeeh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (792, '13688669671', '', 'user_kz30acb48r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (793, '13688669672', '', 'user_1jmeyd8a28', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (794, '13688669673', '', 'user_su5oi3kpfx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (795, '13688669674', '', 'user_4eurdp0387', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (796, '13688669675', '', 'user_orxdegd4d4', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (797, '13688669676', '', 'user_50vxeli8rd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (798, '13688669677', '', 'user_vqsnl66ot5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (799, '13688669678', '', 'user_en3q7qyiqb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (800, '13688669679', '', 'user_0yyk9mnng0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (801, '13688669680', '', 'user_l48qjtjmxl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (802, '13688669681', '', 'user_1wvigh2hxq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (803, '13688669682', '', 'user_gr0bhwfvhu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (804, '13688669683', '', 'user_qpku5s9nr6', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (805, '13688669684', '', 'user_kyhepj12kd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (806, '13688669685', '', 'user_3x99ypxvqy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (807, '13688669686', '', 'user_np8bk7b07w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (808, '13688669687', '', 'user_dnu8kswk6o', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (809, '13688669688', '', 'user_u01mnauofu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (810, '13688669689', '', 'user_48sv36r3xs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (811, '13688669690', '', 'user_6ojf6nhxch', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (812, '13688669691', '', 'user_wd32jqla7r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (813, '13688669692', '', 'user_zsdxxcpkuq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (814, '13688669693', '', 'user_ib97xw8nl2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (815, '13688669694', '', 'user_b7qb56z1p0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (816, '13688669695', '', 'user_i7jmrgmisg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (817, '13688669696', '', 'user_5nf21zmos7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (818, '13688669697', '', 'user_mck6nqe55g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (819, '13688669698', '', 'user_6xnadvfus7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (820, '13688669699', '', 'user_450u8mqe4z', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (821, '13688669700', '', 'user_hv55cq5n1w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (822, '13688669701', '', 'user_qiy3ulbyd0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (823, '13688669702', '', 'user_sx58542ugn', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (824, '13688669703', '', 'user_9xs0uuyds5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (825, '13688669704', '', 'user_zveuo0azp4', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (826, '13688669705', '', 'user_qwt4x5faay', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (827, '13688669706', '', 'user_ztzuqeybvp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (828, '13688669707', '', 'user_kh5n7wfie8', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (829, '13688669708', '', 'user_dwxkvw03b7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (830, '13688669709', '', 'user_3tyhv91k7p', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (831, '13688669710', '', 'user_0jwdppbvdk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (832, '13688669711', '', 'user_twx4z08vzb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (833, '13688669712', '', 'user_lly5v9ibpk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (834, '13688669713', '', 'user_kkho7xpu2u', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (835, '13688669714', '', 'user_l51d2os1wh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (836, '13688669715', '', 'user_i6gkyfawkv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (837, '13688669716', '', 'user_v2k5vdh4he', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (838, '13688669717', '', 'user_7k9ql2go9e', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (839, '13688669718', '', 'user_tnz3f99w2c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (840, '13688669719', '', 'user_833zw6fgxz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (841, '13688669720', '', 'user_f4hq0ga1oj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (842, '13688669721', '', 'user_uxuxrig26t', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (843, '13688669722', '', 'user_grn37re7bg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (844, '13688669723', '', 'user_5msjf8z2fj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (845, '13688669724', '', 'user_53x3w7l7mv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (846, '13688669725', '', 'user_pyolvy8m0v', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (847, '13688669726', '', 'user_12i4hpk09n', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (848, '13688669727', '', 'user_zjhyyt7zfq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (849, '13688669728', '', 'user_avv8zgw4qk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (850, '13688669729', '', 'user_khxmnqb6ni', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (851, '13688669730', '', 'user_i80iu0pb5k', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (852, '13688669731', '', 'user_lqkx9uurmj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (853, '13688669732', '', 'user_ewiswre8fm', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (854, '13688669733', '', 'user_d0nwznn64y', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (855, '13688669734', '', 'user_v7wyz44u6m', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (856, '13688669735', '', 'user_ipkx0z0nno', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (857, '13688669736', '', 'user_64tnyqwxun', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (858, '13688669737', '', 'user_r9bjp3fegg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (859, '13688669738', '', 'user_i36s8hsq72', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (860, '13688669739', '', 'user_cqe1zvq4dr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (861, '13688669740', '', 'user_omdgisd0ls', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (862, '13688669741', '', 'user_3mgz8z636y', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (863, '13688669742', '', 'user_ts3qtzwp68', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (864, '13688669743', '', 'user_56seol3kxp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (865, '13688669744', '', 'user_4x55muo0si', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (866, '13688669745', '', 'user_ny46fscq78', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (867, '13688669746', '', 'user_raano2keb9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (868, '13688669747', '', 'user_31m00sj2bt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (869, '13688669748', '', 'user_2ovmzeq4f3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (870, '13688669749', '', 'user_dis12x5ko3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (871, '13688669750', '', 'user_jx9defd5pu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (872, '13688669751', '', 'user_k3u9zems0n', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (873, '13688669752', '', 'user_o84aucm31f', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (874, '13688669753', '', 'user_h4msccd8qo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (875, '13688669754', '', 'user_6sk051bxed', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (876, '13688669755', '', 'user_1s1r4kks05', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (877, '13688669756', '', 'user_2pfvfdb27x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (878, '13688669757', '', 'user_k5nxhuil69', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (879, '13688669758', '', 'user_6wu2vujv7x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (880, '13688669759', '', 'user_05jr9c63o0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (881, '13688669760', '', 'user_cc2l1lrlw5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (882, '13688669761', '', 'user_ieeqrlof8f', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (883, '13688669762', '', 'user_6m5ermqkua', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (884, '13688669763', '', 'user_mh99rug0nh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (885, '13688669764', '', 'user_n55ceoc392', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (886, '13688669765', '', 'user_72vzhk8py3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (887, '13688669766', '', 'user_bthii5wt36', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (888, '13688669767', '', 'user_mut3q0vunf', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (889, '13688669768', '', 'user_symgsydmbd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (890, '13688669769', '', 'user_7qs7kedl19', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (891, '13688669770', '', 'user_uwyx1i29m0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (892, '13688669771', '', 'user_ls2p6sldmi', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (893, '13688669772', '', 'user_1kmmkpegso', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (894, '13688669773', '', 'user_4zp483y1e7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (895, '13688669774', '', 'user_nr78kan9c3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (896, '13688669775', '', 'user_0r0m7ngv6x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (897, '13688669776', '', 'user_lknjznxmau', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (898, '13688669777', '', 'user_v9g6j6h0ah', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (899, '13688669778', '', 'user_wuyim37fx5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (900, '13688669779', '', 'user_l0lfqjjzs0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (901, '13688669780', '', 'user_6uyxk7pa4u', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (902, '13688669781', '', 'user_f17o0qymn9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (903, '13688669782', '', 'user_ogpqk1b39a', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (904, '13688669783', '', 'user_9jpofrgda1', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (905, '13688669784', '', 'user_n298v8udm3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (906, '13688669785', '', 'user_0biwjc5wwt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (907, '13688669786', '', 'user_xbbdx6wq53', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (908, '13688669787', '', 'user_nh79qly5ir', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (909, '13688669788', '', 'user_v86oajknbs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (910, '13688669789', '', 'user_e13odsshad', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (911, '13688669790', '', 'user_6cvwrirdtl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (912, '13688669791', '', 'user_nqr7bpgz67', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (913, '13688669792', '', 'user_wn1ae0p6gw', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (914, '13688669793', '', 'user_te48rluimb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (915, '13688669794', '', 'user_p2r85n4k8g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (916, '13688669795', '', 'user_ca8fdlrbty', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (917, '13688669796', '', 'user_toque00p0i', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (918, '13688669797', '', 'user_uiti5cdbhf', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (919, '13688669798', '', 'user_8pgku7viy8', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (920, '13688669799', '', 'user_cdafki4cwc', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (921, '13688669800', '', 'user_fyyk2yfpk5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (922, '13688669801', '', 'user_78e1meevls', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (923, '13688669802', '', 'user_qzwls7m33b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (924, '13688669803', '', 'user_jxuw8ixefk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (925, '13688669804', '', 'user_1xye60infx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (926, '13688669805', '', 'user_gvccna2mni', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (927, '13688669806', '', 'user_tftvpegd2c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (928, '13688669807', '', 'user_6ihh78vpox', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (929, '13688669808', '', 'user_46qroyojdl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (930, '13688669809', '', 'user_wwi4i2wb77', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (931, '13688669810', '', 'user_s28l0bryil', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (932, '13688669811', '', 'user_4lgib8jvrx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (933, '13688669812', '', 'user_fczpz5s31b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (934, '13688669813', '', 'user_3cvkn9pv9w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (935, '13688669814', '', 'user_wtvk7gx8ar', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (936, '13688669815', '', 'user_yrel6rbyyd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (937, '13688669816', '', 'user_hmxjnsbnon', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (938, '13688669817', '', 'user_cuxcl0d2oo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (939, '13688669818', '', 'user_1ax8x9zw0c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (940, '13688669819', '', 'user_p7v98oe5nm', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (941, '13688669820', '', 'user_m90rt3bwsz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (942, '13688669821', '', 'user_xhty5jm1hy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (943, '13688669822', '', 'user_7h88k22eo0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (944, '13688669823', '', 'user_5a75z9jcqa', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (945, '13688669824', '', 'user_3t0twwq0nh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (946, '13688669825', '', 'user_861ywr4gfr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (947, '13688669826', '', 'user_iwkz8k1zpx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (948, '13688669827', '', 'user_vzmhyoz1ap', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (949, '13688669828', '', 'user_5tmpddukgq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (950, '13688669829', '', 'user_h6siyam4hb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (951, '13688669830', '', 'user_n5yqq6mgka', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (952, '13688669831', '', 'user_an9epa7f2r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (953, '13688669832', '', 'user_5vr0cdy8sz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (954, '13688669833', '', 'user_xpanlhqjbq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (955, '13688669834', '', 'user_3cfykc172m', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (956, '13688669835', '', 'user_1n0jceyzim', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (957, '13688669836', '', 'user_4ixi7efxtr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (958, '13688669837', '', 'user_5adpp336iy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (959, '13688669838', '', 'user_mflzjd6e6b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (960, '13688669839', '', 'user_80bwfj72p7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (961, '13688669840', '', 'user_i3anusitco', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (962, '13688669841', '', 'user_yj4pcsrkl9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (963, '13688669842', '', 'user_7v9x6gxjdz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (964, '13688669843', '', 'user_2ahufmnyzp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (965, '13688669844', '', 'user_1oel6c441t', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (966, '13688669845', '', 'user_qxzcv0ib6g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (967, '13688669846', '', 'user_9uyh0i8ykg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (968, '13688669847', '', 'user_tb01d4d9ql', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (969, '13688669848', '', 'user_hwpkx6ovii', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (970, '13688669849', '', 'user_pqd04q9hq2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (971, '13688669850', '', 'user_4t7wkgkufh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (972, '13688669851', '', 'user_834e4vzf0e', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (973, '13688669852', '', 'user_pxk4urlnmo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); -INSERT INTO `tb_user` VALUES (974, '13688669853', '', 'user_e3x6n0ff0d', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (975, '13688669854', '', 'user_wxnvsvb5ut', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (976, '13688669855', '', 'user_ehi7k4zpjb', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (977, '13688669856', '', 'user_om0pzyh3z1', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (978, '13688669857', '', 'user_9asdqbe7od', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (979, '13688669858', '', 'user_seuabngxt9', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (980, '13688669859', '', 'user_b0qvb27eiy', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (981, '13688669860', '', 'user_63sjue2tkh', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (982, '13688669861', '', 'user_cc3lvxfr1u', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (983, '13688669862', '', 'user_in37hfw5tk', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (984, '13688669863', '', 'user_jtg0c9tyqn', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (985, '13688669864', '', 'user_qzpipaj50w', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (986, '13688669865', '', 'user_ppnb4ljetq', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (987, '13688669866', '', 'user_zbcui7783k', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (988, '13688669867', '', 'user_ki4dxb9q9b', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (989, '13688669868', '', 'user_27b5dxktn0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (990, '13688669869', '', 'user_fxvb2av882', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (991, '13688669870', '', 'user_6vp3uflnwm', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (992, '13688669871', '', 'user_7ix7djbg30', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (993, '13688669872', '', 'user_vx8r39tjiu', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (994, '13688669873', '', 'user_l2wdiwule0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (995, '13688669874', '', 'user_z4qe1up5zx', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (996, '13688669875', '', 'user_bklo4b32lu', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (997, '13688669876', '', 'user_ax0y473ndh', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (998, '13688669877', '', 'user_yx2p44qww3', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (999, '13688669878', '', 'user_bnw9bzib34', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1000, '13688669879', '', 'user_cdj4ojh4pc', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1001, '13688669880', '', 'user_l7o3r96hn3', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1002, '13688669881', '', 'user_zbehzrz279', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1003, '13688669882', '', 'user_tql21zepcx', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1004, '13688669883', '', 'user_jnxnrk8qt0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1005, '13688669884', '', 'user_8e5twg6q0k', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1006, '13688669885', '', 'user_gfeusukbpp', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1007, '13688669886', '', 'user_sveivfswhn', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1008, '13688669887', '', 'user_qgf4t8jkx0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); -INSERT INTO `tb_user` VALUES (1009, '13688669888', '', 'user_4qh6bofkol', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); - --- ---------------------------- --- Table structure for tb_user_info --- ---------------------------- -DROP TABLE IF EXISTS `tb_user_info`; -CREATE TABLE `tb_user_info` ( - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键,用户id', - `city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '城市名称', - `introduce` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个人介绍,不要超过128个字符', - `fans` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '粉丝数量', - `followee` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '关注的人的数量', - `gender` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '性别,0:男,1:女', - `birthday` date NULL DEFAULT NULL COMMENT '生日', - `credits` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '积分', - `level` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '会员级别,0~9级,0代表未开通会员', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_user_info --- ---------------------------- - --- ---------------------------- --- Table structure for tb_voucher --- ---------------------------- -DROP TABLE IF EXISTS `tb_voucher`; -CREATE TABLE `tb_voucher` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', - `shop_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '商铺id', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '代金券标题', - `sub_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '副标题', - `rules` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '使用规则', - `pay_value` bigint(10) UNSIGNED NOT NULL COMMENT '支付金额,单位是分。例如200代表2元', - `actual_value` bigint(10) NOT NULL COMMENT '抵扣金额,单位是分。例如200代表2元', - `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0,普通券;1,秒杀券', - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1,上架; 2,下架; 3,过期', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_voucher --- ---------------------------- -INSERT INTO `tb_voucher` VALUES (1, 1, '50元代金券', '周一至周日均可使用', '全场通用\\n无需预约\\n可无限叠加\\不兑现、不找零\\n仅限堂食', 4750, 5000, 0, 1, '2022-01-04 09:42:39', '2022-01-04 09:43:31'); - --- ---------------------------- --- Table structure for tb_voucher_order --- ---------------------------- -DROP TABLE IF EXISTS `tb_voucher_order`; -CREATE TABLE `tb_voucher_order` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '下单的用户id', - `voucher_id` bigint(20) UNSIGNED NOT NULL COMMENT '购买的代金券id', - `pay_type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '支付方式 1:余额支付;2:支付宝;3:微信', - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间', - `pay_time` timestamp NULL DEFAULT NULL COMMENT '支付时间', - `use_time` timestamp NULL DEFAULT NULL COMMENT '核销时间', - `refund_time` timestamp NULL DEFAULT NULL COMMENT '退款时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of tb_voucher_order --- ---------------------------- - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/resources/mapper/VoucherMapper.xml b/src/main/resources/mapper/VoucherMapper.xml deleted file mode 100644 index f87a13b..0000000 --- a/src/main/resources/mapper/VoucherMapper.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/src/main/resources/unlock.lua b/src/main/resources/unlock.lua deleted file mode 100644 index d057e44..0000000 --- a/src/main/resources/unlock.lua +++ /dev/null @@ -1,15 +0,0 @@ ---- ---- Generated by EmmyLua(https://github.com/EmmyLua) ---- Created by fang. ---- DateTime: 2025/3/21 16:27 ---- - ---- 获取redis中存的id - ---- 获取UUID+当前线程id,通过参数传进来 -if(redis.call("get", KEYS[1])==ARGV[1]) then - --- 一致删除锁,并放回1 - return redis.call("del", KEYS[1]) -end ---- 不一致返回0 -return 0 diff --git a/src/test/java/com/hmdp/HmDianPingApplicationTests.java b/src/test/java/com/hmdp/HmDianPingApplicationTests.java deleted file mode 100644 index 5f99c6f..0000000 --- a/src/test/java/com/hmdp/HmDianPingApplicationTests.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.hmdp; - -import com.hmdp.utils.RedisIdWorker; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import javax.annotation.Resource; - - -@SpringBootTest() -@RunWith(SpringJUnit4ClassRunner.class) -public class HmDianPingApplicationTests { - @Autowired - RedisIdWorker redisIdWorker; - - @Test - public void testIdWorker() { - for (int i = 0; i < 100; i++) { - long id = redisIdWorker.nextId("order"); - System.out.println("id = " + id); - } - } - -}