After a year of development A new stable branch of the high-performance HTTP server and multi-protocol proxy server , which incorporates changes accumulated within the main branch 1.17.x. In the future, all changes in the stable branch 1.18 will focus on eliminating serious bugs and vulnerabilities. Soon, the main branch nginx 1.19 will be formed, where the development of new features will continue. For ordinary users who do not need to ensure compatibility with third-party modules, it is recommended to use the main branch, based on which commercial product Nginx Plus releases are generated every three months.
In accordance with from Netcraft shows that nginx is used on 19.56% of all active websites (down from 20.73% last year and 21.02% two years ago), corresponding to second place in popularity in this category (Apache's share is 27.64%, Google — 10.03%, Microsoft IIS — 4.77%). However, when considering all websites, nginx maintains its leadership with a 36.91% market share (up from 27.52% last year), while Apache's share is 24.73%, Microsoft IIS — 12.85%, Google — 3.42%.
Among the million most visited websites in the world, nginx accounts for 25.54% (down from 26.22% last year and up from 23.76% two years ago). Currently, approximately 459 million websites run on nginx (up from 397 million last year). According to W3Techs, nginx is used on 31.9% of the million most visited websites, down from 41.8% last April and 38% the year before (the decline is attributed to Cloudflare's separate accounting for its HTTP server). Apache's share has decreased from 43.6% to 38.9% over the year, and Microsoft IIS's share has dropped from 8.6% to 8.3%. In Russia, nginx is used on 78.9% of the most visited websites (down from 81% last year).
The most notable improvements added during the formation of the main branch 1.17.x:
- The directive has been added , which activates a dry run mode where the request rate limits are not applied (no rate limit), but the number of requests exceeding the limits is still counted in shared memory;
- The directive has been added , transitioning the ngx_http_limit_conn_module to trial mode, where the number of connections is not limited but is accounted for;
- Added the directive "", which allows adding a delay for unauthorized requests with a 401 response code to reduce the intensity of password guessing and protect against , timing attacks when accessing systems that are password-protected , or (JSON Web Token);
- Support has been added for variables in the directives 'limit_rate' and 'limit_rate_after', as well as in the 'proxy_upload_rate' and 'proxy_download_rate' directives of the stream module;
- In the directive Support has been added for using a variable in the parameter that defines the address. If the address is specified as a domain name, the name is searched among described server groups, and if not found, it is determined using a resolver;
- New variables added and , which contain the server address and port obtained from the PROXY protocol header;
- In the module A variable has been added , which stores the result of connection limit: PASSED, REJECTED, or REJECTED_DRY_RUN;
- In the module A variable has been added , which stores the result of request rate limiting: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN, or REJECTED_DRY_RUN;
- By default, module assembly is ensured. ;
- Added support for switching named blocks 'location' using the $r->internal_redirect() method provided by the built-in Perl interpreter. This method now implies processing URIs with escaped characters;
- When used in the ‘upstream’ settings block with the directive ‘’ for load balancing with client affinity to a server, if an empty key value is specified, the round-robin mode is now activated;
- Support has been added for invoking ioctl(FIONREAD) if available, to avoid reading from a fast connection for extended periods.
Source: opennet.ru
