nginx 1.18.0 release

After a year of development represented new stable branch of high performance HTTP server and multiprotocol proxy server nginx 1.18.0, which has absorbed the changes accumulated within the 1.17.x main branch. In the future, all changes in the 1.18 stable branch will be related to the elimination of serious bugs and vulnerabilities. The main branch of nginx 1.19 will soon be formed, within which the development of new features will continue. For ordinary users who do not have the task of ensuring compatibility with third-party modules, recommended use the main branch, on the basis of which releases of the commercial Nginx Plus product are formed every three months.

In accordance with April report by Netcraft, nginx is used on 19.56% of all active sites (20.73% a year ago, 21.02% two years ago), which corresponds to the second place in popularity in this category (Apache's share corresponds to 27.64%, Google - 10.03%, Microsoft IIS - 4.77%) . At the same time, when considering all sites, nginx retains its leadership and occupies 36.91% of the market (27.52% a year ago), while the share of Apache corresponds to 24.73%, Microsoft IIS - 12.85%, Google - 3.42%.

Among the million most visited sites in the world, the share of nginx is 25.54% (26.22% a year ago, 23.76% two years ago). Currently, about 459 million sites are running nginx (397 million a year ago). By According to W3Techs nginx is used on 31.9% of the sites of the million most visited, in April last year this figure was 41.8%, the year before last - 38% (the decline is due to the transition to a separate account of the Cloudflare http server). The share of Apache decreased from 43.6% to 38.9% over the year, and the share of Microsoft IIS from 8.6% to 8.3%. In Russia, nginx used by 78.9% of the most visited sites (a year ago - 81%).

The most notable improvements added during the formation of the 1.17.x main branch:

  • Directive added limit_req_dry_run, which activates the trial run mode, which does not apply restrictions on the intensity of request processing (without rate limit), but continues to account for the number of requests that go beyond the limits in shared memory;
  • Directive added limit_conn_dry_run, which puts the ngx_http_limit_conn_module module into trial run mode, in which the number of connections is not limited, but taken into account;
  • Added directive "auth_delay", which allows you to add a delay for unauthorized requests with a 401 response code to reduce the intensity of password guessing and protection against attacks, manipulating the measurement of the execution time of operations (timing attack) when accessing systems with limited access password, subquery result or JWT (JSON Web Token);
  • Added support for variables in the "limit_rate" and "limit_rate_after" directives, as well as in the "proxy_upload_rate" and "proxy_download_rate" directives of the stream module;
  • In directive grpc_pass added support for using a variable in a parameter that defines an address. If the address is specified in the form of a domain name, the name is looked up among the described server groups, and if not found, then it is determined using the resolver;
  • Added new variables $proxy_protocol_server_addr ΠΈ $proxy_protocol_server_port, which contain the server address and port obtained from the PROXY protocol header;
  • In the module ngx_stream_limit_conn_module variable added $limit_conn_status, which stores the result of the connection limit: PASSED, REJECTED, or REJECTED_DRY_RUN;
  • In the module ngx_http_limit_req_module variable added $limit_req_status, which stores the result of request rate limiting: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN, or REJECTED_DRY_RUN;
  • Module assembly is provided by default ngx_http_postpone_filter_module;
  • Added support for switching named "location" blocks using the $r->internal_redirect() method provided by Perl's built-in interpreter. This method now implies processing URIs with escaped characters;
  • When using the "upstream" directive in the "upstream" settings blockhash"to organize load balancing with client-server binding, if the key value is empty, the uniform balancing mode (round-robin) is now activated;
  • Added support for calling ioctl(FIONREAD) if available, to avoid reading from a fast connection for a long time.

Source: opennet.ru

Add a comment