GetPageSpeed | NGINX & Beyond
24 subscribers
83 photos
95 links
Securing and optimizing NGINX web servers

Blog: https://www.getpagespeed.com/posts
NGINX Extras: https://nginx-extras.getpagespeed.com/
Service status: https://getpagespeed.statuspage.io
Download Telegram
[Mastering the index Directive in Nginx: Best Practices and Optimization Tips](https://www.getpagespeed.com/server-setup/nginx/nginx-index-directive-guide)

The index directive in Nginx is essential for serving default files when a directory is requested. In this guide, we explore its configuration, best practices, and security enhancements. Learn how to effectively use the index directive to improve your Nginx server’s performance and protect your website.


#Index, #Nginx
NGINX v1.27.0 sources was released



*GetPageSpeed package nginx will be available within 48 hours*
Angie Web Server v1.5.2 sources was released

Security: When using HTTP/3, processing of a specially crafted QUIC session could cause a worker process crash, worker process memory disclosure on systems with MTU larger than 4096 bytes, or have other impact (CVE-2024-32760, CVE-2024-31079, CVE-2024-35200, CVE-2024-34161); the fix has been ported from nginx 1.26.1.

*GetPageSpeed package angie will be available within 48 hours*
Angie Web Server v1.6.0 sources was released

Feature: The sticky directive and related options in the stream module’s upstream block, which allow to configure sticky sessions mode where all connections in the session are routed to the same server.

Feature: Extraction of Cookie values from RDP connections using the rdp_preread directive in the stream module into $rdp_cookie and $rdp_cookie_NAME variables, which allows to log and stick RDP client sessions to particular servers while load balancing.

Feature: Support for multiple acme directives in a server block, which allows to configure obtaining two types of certificates at once for that virtual server.

Feature: Command line options -m and -M to list built-in and loaded modules.

Feature: Support for BoringSSL in the ACME module.

Feature: All functionality of nginx 1.27.0, including support for virtual servers in the stream module and the pass directive, which allows to pass accepted connections for handling to another listening sockets, including HTTP and Mail modules.

Bugfix: Certificate request via the ACME protocol could result in error on some configurations with a log message like [alert] getsockname() failed (9: Bad file descriptor).

Bugfix: Certificate request with large number of domain names via the ACME protocol could result in error with a log message like [error] JSON parser error.

Bugfix: ACME clients in configurations with multiple error_log directives could log messages to irrelevant logs.

*GetPageSpeed package angie will be available within 48 hours*
🚀 Keep Your CentOS 7 Systems Up-to-Date with GetPageSpeed! 🚀

Facing issues with your CentOS 7 base repositories? Worry not! GetPageSpeed provides Long-Term Support (LTS) for CentOS 7 until 1st November 2025. Just install/update the latest GetPageSpeed release package to keep your systems running smoothly:


yum -y install https://extras.getpagespeed.com/release-latest.rpm


This command fixes everything! 😊

Stay secure and up-to-date with GetPageSpeed's LTS support!
GetPageSpeed | NGINX & Beyond pinned «🚀 Keep Your CentOS 7 Systems Up-to-Date with GetPageSpeed! 🚀 Facing issues with your CentOS 7 base repositories? Worry not! GetPageSpeed provides Long-Term Support (LTS) for CentOS 7 until 1st November 2025. Just install/update the latest GetPageSpeed release…»
Angie Web Server v1.6.1 sources was released

Feature: A new passed counter in the API statistics of the stream module’s status_zone directive tracks connections passed to other sockets using pass directives.

Bugfix: When using virtual servers or the pass directives in the stream module, connections could be accounted incorrectly in the statistics API.

Bugfix: Worker processes could crash on configurations with 5 ACME clients or more; the bug had appeared in 1.6.0.

Bugfix: Handling cached responses with the X-Accel-Redirect header could crash the worker process. Thanks to Maxim Dounin (freenginx) and Jiří Setnička.

*GetPageSpeed package angie will be available within 48 hours*
NGINX v1.27.1 sources was released



*GetPageSpeed package nginx will be available within 48 hours*
Angie Web Server v1.6.2 sources was released

Security: Processing a specially crafted MP4 file with the ngx_http_mp4_module could cause a worker process crash (CVE-2024-7347); the fix was ported from nginx 1.27.1.

*GetPageSpeed package angie will be available within 48 hours*
libmodsecurity v3.0.13 sources was released

Major changes in v3:


• added Windows port

• improved CI workflow

• removed unnecessary string copy operations, improved engine speed - several PR's

• fixed a bug in @pm operator

• extended the C/C++ API

For more information please see CHANGES.

*GetPageSpeed package libmodsecurity will be available within 48 hours*
📢 Exciting News for GetPageSpeed Subscribers! 🚀

We are thrilled to announce that our NGINX package offerings now include full ARM64 support! 🎉 This means you can now develop faster and set up high-performance environments with ARM-based servers like AWS Graviton, taking full advantage of the efficiency and power of ARM architecture.

With our updated packages, you get:
NGINX and supporting modules fully compatible with ARM64
Optimized for HTTP/3, ensuring the best performance and latest web standards
Perfect for deploying on energy-efficient, cost-effective ARM servers, such as AWS Graviton

Whether you are running high-traffic websites or resource-intensive applications, our NGINX packages for ARM64 are here to deliver superior performance with unmatched ease of use.
Angie Web Server v1.7.0 sources was released

Feature: Forced closing of all connections to a proxied server when it’s removed from the group can be configured via the proxy_connection_drop, grpc_connection_drop, fastcgi_connection_drop, scgi_connection_drop, and uwsgi_connection_drop directives.


Feature: Counters of sent DNS query types in the resolver statistics API, which is collected with the status_zone parameter of the resolver directive.


Feature: The $ssl_server_cert_type variable that contains the type of selected certificate for a received TLS-connection.


Feature: Disabling creation of the PID file with the off parameter of the pid directive, which might be beneficial with immutable images and direct control by a service manager. Thanks to Maxim Dounin (freenginx).


Feature: Creation of the PID file made atomic via an intermediate temporary file, which removes a moment when the file is already in the directory but still empty, and allows external programs to handle it more easily and reliably.


Feature: Now, during reconfiguration, no attempt is made to recreate the PID file if the name in the pid directive has changed but points to the same file via symlinks; in particular, it allows avoiding issues on systems that migrate from /var/run/angie.pid to /run/angie.pid. Thanks to Maxim Dounin (freenginx).


Feature: Syslog logging errors are now reported no more than once per second; this helps avoid flooding the logs with such messages when the syslog server is down or overloaded. Thanks to Maxim Dounin (freenginx).


Feature: In the Mail proxy module, the maximum number of commands during authentication, configured with the max_commands directive, is limited to better protect against DoS attacks. Thanks to Maxim Dounin (freenginx).


Feature: The --feature-cache option of the ./configure script to cache its results for optimization when building multiple modules or cross-compiling.


Feature: All functionality of nginx 1.27.1.


Bugfix: PID file ... not readable (yet?) after start and Failed to parse PID from file... errors might appear when starting with systemd. Thanks to Maxim Dounin (freenginx).


Change: Updated descriptions of HTTP status codes in conformance with RFC 9110. Thanks to Maxim Dounin (freenginx) and Michiel W. Beijen.


Change: A maximum of one empty line is now allowed before an HTTP request to better protect against DoS attacks. Thanks to Maxim Dounin (freenginx).


Change: HTTP/1.x header field names without a colon at the end are now prohibited; such invalid header fields from a client or a proxied server will now cause an error response. Thanks to Maxim Dounin (freenginx) and Maksim Yevmenkin.


Change: When reading a request body using HTTP/1.1 chunked transfer encoding, the total size of ignored chunk extensions and trailer header fields is now limited by the client_max_body_size directive to better protect against DoS attacks. Thanks to Maxim Dounin (freenginx) and Bartek Nowotarski.


Change: The MIME type in the mime.types configuration file has been changed to image/bmp for the bmp extension and application/vnd.rar for the rar extension; set to application/vnd.debian.binary-package for the deb and udeb extensions. Thanks to Yuriy Izorkin.

*GetPageSpeed package angie will be available within 48 hours*
Audio
🎶 Deep dive into NGINX Security Headers module with our new GetPageSpeed podcast episode.

Security Headers Module: https://nginx-extras.getpagespeed.com/modules/security-headers/
Please open Telegram to view this post
VIEW IN TELEGRAM
Angie Web Server v1.8.0 sources was released

Feature: Support of DNS-01 challenges by handling DNS queries from the ACME server, which allows to automatically request certificates of any types, including wildcard ones.


Feature: Hooks system in the ACME module, configurable using the acme_hook directive, which allows handling of domain name challenges using an external application to provide integration with various services and DNS hosting providers.


Feature: The ACME module logs some additional information: why exactly the certificate is being renewed, full domain name list, client's account ID, long periods of inactivity (e.g. pollings), and the domain name being challenged; this information simplifies troubleshooting and allows to specify the CAA DNS record.


Feature: The account_key parameter of the acme_client directive, which allows to reuse an existing key for the ACME server account instead of auto-generating a new one.


Feature: Support for variables in the status_zone directives in the stream and HTTP modules allows to dynamically account statistics within several zones in a single location or server block; in particular, it's especially useful when a single server block is handling multiple virtual hosts.


Feature: GZip HTTP compression module compatibility with the zlib-ng versions 2.2.0 and above, which could previously cause [alert] gzip filter failed to use preallocated memory messages in the error log.


Feature: The max_headers directive that limits the number of HTTP request header fields to better protect against DoS attacks. Thanks to Maxim Dounin (freenginx) and Maksim Yevmenkin.


Feature: The http3_max_table_capacity and proxy_http3_max_table_capacity directives to configure the HTTP/3 dynamic header compression table limits.


Feature: Cross-compilation support - the build system can now use a wrapper script to run autotests, which enables to prepare a build without running test programs directly on the target platform.


Feature: All functionality of nginx 1.27.3.


Bugfix: HTTP/3 clients could time out when using 0-RTT; the bug was inherited from nginx in version 1.7.0.


Bugfix: Proxying with HTTP/3 using variables in the proxy_pass directive and without specifying an upstream block could crash the worker process.


Bugfix: HTTP/3 upstreams using dynamic table could lead to worker process crash if used with cache.


Bugfix: Some SSL handshakes could be not counted in statistics for the Stream module.


Bugfix: HTTP/3 proxy settings specified in http or server level might be ignored.


Bugfix: The proxy_client_certificate directive didn't work when proxying via HTTP/3 with NTLS support enabled.


Change: When gracefully shutting down old worker processes, keep-alive connections are now closed only after the timeout specified by the lingering_timeout directive has expired; this behaviour allows to avoid possible client errors when receiving replies at that moment. Thanks to Maxim Dounin (freenginx).


Change: Disabled caching of the Stream module variables $ssl_server_name, $ssl_server_cert_type, $ssl_preread_protocol, and $ssl_preread_server_name, which allows to get actual values when using virtual servers.

*GetPageSpeed package angie will be available within 48 hours*
Angie Web Server v1.8.1 sources was released

Bugfix: Using the status_zone directive in the server block of the HTTP module caused excessive logging of empty requests in access_log on TLS handshakes; the bug had appeared in 1.8.0.

Bugfix: Decoding errors in HTTP/3 stream could cause a worker process crash when closing a QUIC connection; the fix was ported from nginx 1.27.4.

Bugfix: Sending QUIC protocol version negotiation packets could cause an infinite packet exchange loop; the fix was ported from nginx 1.27.4.

Bugfix: Using DNS-challenge without hooks in the ACME module could cause a worker process crash in some configurations.

*GetPageSpeed package angie will be available within 48 hours*
Angie Web Server v1.8.2 sources was released

Security: Insufficient validation while handling virtual servers with TLSv1.3 SNI allowed SSL sessions to be reused in a different virtual server, bypassing client SSL certificate verification (CVE-2025-23419); the fix was ported from nginx 1.27.4.


Bugfix: API requests to retrieve statistic values from an individual zone, which was set via variables, could cause a worker process to enter an infinite loop.


Bugfix: HTTP/3 requests were not counted in zone statistics; the bug had appeared in 1.8.0.


Bugfix: TLS handshakes using QUIC protocol were not counted in SSL statistics.


Bugfix: Certificate renewal via the ACME protocol could fail for server names prefixed with a dot in the server_name directive.

*GetPageSpeed package angie will be available within 48 hours*
libmodsecurity v3.0.14 sources was released

Major changes in v3:

• changed t:htmlEntityDecode transformation; fixed CVE-2025-27110

• add value checking to @validateByteRange operator

• fixed build library on OSX without GeoIP brew package

• aligned TIME_MON variable's behavior

• Leverage std::make_unique & std::make_shared to create objects in the heap

• Simplified handling of RuleMessage by removing usage of std::shared_ptr

• Simplified constructors, copy constructors & assignment operators

For more information please see CHANGES.

*GetPageSpeed package libmodsecurity will be available within 48 hours*
Angie Web Server v1.8.3 sources was released

Bugfix: The server statistics in the HTTP module's server block could be miscalculated if requests within the same connection belonged to different statistics zones, or if an error occurred during early request processing; the bug had appeared in 1.8.2.

*GetPageSpeed package angie will be available within 48 hours*
Angie Web Server v1.9.0 sources was released

Feature: The ability to specify a file in the proxy_cache_path directive, where the contents of the shared memory zone with the cache index will be saved between server startups; this eliminates the need to reload the cache after a restart and allows the server to come back online almost immediately.

Feature: Support of TLS 1.3 Early Data (0-RTT) in the stream module using the ssl_early_data directive.

Feature: New busy state for upstream peers in the statistics API, indicating that a peer has reached the limit configured by the max_conns option.

Feature: The uri= parameter in the acme_hook directive allows redefining the hook request URI and supports variables.

FeatureThe renew_on_load parameter of the acme_client directive allows forcing certificate renewal on config load.

FeatureBuild time is now displayed via the build_time field of the /status/angie statistics API object and in the output of the -V command-line option.

FeatureAll functionality of nginx 1.27.4, except for the keepalive_min_timeout directive (a similar feature has existed since version 1.8.0).

Change: The enabled=off parameter in the acme_client directive now disables only certificate renewal for the given client while preserving all other functionality; the key and certificate (if available) can be accessed via the $acme_cert_* variables, while the use of $acme_hook_* variables and the acme directives doesn't cause errors.

Change: The no valid domain name defined for ACME client error is now issued only if no valid (i.e., ACME-compliant) domain name is found in the server block that references an ACME client using the acme directive.

Bugfix: If built with NTLS support, inheritance of the proxy_ssl_certificate and proxy_ssl_certificate_key directives with variables did not work properly.

*GetPageSpeed package angie will be available within 48 hours*