aboutsummaryrefslogtreecommitdiff
path: root/auto/modules
Commit message (Collapse)AuthorAge
* SSL: object caching.Sergey Kandaurov2024-10-01
| | | | | | | | | | Added ngx_openssl_cache_module, which indexes a type-aware object cache. It maps an id to a unique instance, and provides references to it, which are dropped when the cycle's pool is destroyed. The cache will be used in subsequent patches. Based on previous work by Mini Hawthorne.
* Stream: ngx_stream_pass_module.Roman Arutyunyan2024-02-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The module allows to pass connections from Stream to other modules such as HTTP or Mail, as well as back to Stream. Previously, this was only possible with proxying. Connections with preread buffer read out from socket cannot be passed. The module allows selective SSL termination based on SNI. stream { server { listen 8000 default_server; ssl_preread on; ... } server { listen 8000; server_name foo.example.com; pass 127.0.0.1:8001; # to HTTP } server { listen 8000; server_name bar.example.com; ... } } http { server { listen 8001 ssl; ... location / { root html; } } }
* HTTP/2: removed server push (ticket #2432).Sergey Kandaurov2023-06-08
| | | | | | | | | | | | | | | | | | Although it has better implementation status than HTTP/3 server push, it remains of limited use, with adoption numbers seen as negligible. Per IETF 102 materials, server push was used only in 0.04% of sessions. It was considered to be "difficult to use effectively" in RFC 9113. Its use is further limited by badly matching to fetch/cache/connection models in browsers, see related discussions linked from [1]. Server push was disabled in Chrome 106 [2]. The http2_push, http2_push_preload, and http2_max_concurrent_pushes directives are made obsolete. In particular, this essentially reverts 7201:641306096f5b and 7207:3d2b0b02bd3d. [1] https://jakearchibald.com/2017/h2-push-tougher-than-i-thought/ [2] https://chromestatus.com/feature/6302414934114304
* Stream: removed QUIC support.Roman Arutyunyan2023-05-14
|
* QUIC: OpenSSL compatibility layer.Roman Arutyunyan2023-02-22
| | | | | | The change allows to compile QUIC with OpenSSL which lacks BoringSSL QUIC API. This implementation does not support 0-RTT.
* QUIC: separate UDP framework for QUIC.Roman Arutyunyan2022-04-20
| | | | | | | Previously, QUIC used the existing UDP framework, which was created for UDP in Stream. However the way QUIC connections are created and looked up is different from the way UDP connections in Stream are created and looked up. Now these two implementations are decoupled.
* Merged with the default branch.Ruslan Ermilov2021-12-24
|\
| * Moved Huffman coding out of HTTP/2.Ruslan Ermilov2021-12-21
| | | | | | | | | | ngx_http_v2_huff_decode.c and ngx_http_v2_huff_encode.c are renamed to ngx_http_huff_decode.c and ngx_http_huff_encode.c.
* | QUIC: configure cleanup.Ruslan Ermilov2021-12-09
| | | | | | | | Renamed and removed some macros.
* | HTTP/3: renamed files.Roman Arutyunyan2021-12-07
| | | | | | | | | | | | | | | | ngx_http_v3_tables.h and ngx_http_v3_tables.c are renamed to ngx_http_v3_table.h and ngx_http_v3_table.c to better match HTTP/2 code. ngx_http_v3_streams.h and ngx_http_v3_streams.c are renamed to ngx_http_v3_uni.h and ngx_http_v3_uni.c to better match their content.
* | HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.Roman Arutyunyan2021-12-06
| |
* | Configure: USE_OPENSSL_QUIC=YES implies USE_OPENSSL=YES.Ruslan Ermilov2021-09-21
| |
* | QUIC: better ordering in auto/modules.Vladimir Homutov2021-08-05
| |
* | HTTP/3: got rid of HTTP/2 module dependency.Vladimir Homutov2021-08-05
| | | | | | | | The Huffman encoder/decoder now can be built separately from HTTP/2 module.
* | HTTP/3: moved session initialization to a separate file.Roman Arutyunyan2021-05-05
| | | | | | | | Previously it was in ngx_http_v3_streams.c, but it's unrelated to streams.
* | HTTP/3: separate header files for existing source files.Roman Arutyunyan2021-05-05
| |
* | QUIC: connection migration.Vladimir Homutov2021-04-29
| | | | | | | | | | | | The patch adds proper transitions between multiple networking addresses that can be used by a single quic connection. New networking paths are validated using PATH_CHALLENGE/PATH_RESPONSE frames.
* | QUIC: separate files for SSL library interfaces.Vladimir Homutov2021-04-14
| |
* | QUIC: separate files for tokens related processing.Vladimir Homutov2021-04-13
| |
* | QUIC: separate files for output and ack related processing.Vladimir Homutov2021-04-13
| |
* | QUIC: separate files for stream related processing.Vladimir Homutov2021-04-13
| |
* | QUIC: separate files for frames related processing.Vladimir Homutov2021-04-13
| |
* | QUIC: separate files for connection id related processing.Vladimir Homutov2021-04-13
| |
* | QUIC: distinct files for connection migration.Vladimir Homutov2021-03-31
| | | | | | | | | | The connection migration-related code from quic.c with dependencies is moved into separate file.
* | QUIC: separate header for ngx_quic_connection_t.Vladimir Homutov2021-03-31
| |
* | Merged with the default branch.Sergey Kandaurov2021-03-10
|\|
| * Mail: realip module.Maxim Dounin2021-03-05
| | | | | | | | | | When configured with the "set_real_ip_from", it can set client's IP address as visible in logs to the one obtained via the PROXY protocol.
* | QUIC: ngx_quic_bpf module.Vladimir Homutov2020-12-25
| | | | | | | | | | | | | | | | | | | | | | | | The quic kernel bpf helper inspects packet payload for DCID, extracts key and routes the packet into socket matching the key. Due to reuseport feature, each worker owns a personal socket, which is identified by the same key, used to create DCID. BPF objects are locked in RAM and are subject to RLIMIT_MEMLOCK. The "ulimit -l" command may be used to setup proper limits, if maps cannot be created with EPERM or updated with ETOOLONG.
* | QUIC: ngx_quic_module.Vladimir Homutov2020-12-25
| |
* | QUIC: moved all quic sources into src/event/quic.Vladimir Homutov2020-12-25
| |
* | HTTP/3: introduced ngx_http_v3_filter.Roman Arutyunyan2020-11-27
| | | | | | | | | | | | | | The filter is responsible for creating HTTP/3 response header and body. The change removes differences to the default branch for ngx_http_chunked_filter_module and ngx_http_header_filter_module.
* | Merged with the default branch.Sergey Kandaurov2020-10-01
|\|
| * Stream: set module.Pavel Pautov2020-08-28
| | | | | | | | Adds 'set' directive to the stream server context.
* | HTTP/3: renamed ngx_http_v3.c to ngx_http_v3_encode.c.Roman Arutyunyan2020-07-13
| | | | | | | | The file contains only encoding functions.
* | QUIC: added "quic" listen parameter in Stream.Roman Arutyunyan2020-07-21
| | | | | | | | Also, introduced ngx_stream_quic_module.
* | QUIC: added "quic" listen parameter.Roman Arutyunyan2020-07-21
| | | | | | | | | | | | The parameter allows processing HTTP/0.9-2 over QUIC. Also, introduced ngx_http_quic_module and moved QUIC settings there
* | Configure: unbreak with old OpenSSL, --with-http_v3_module added.Sergey Kandaurov2020-04-30
| |
* | Refactored HTTP/3 parser.Roman Arutyunyan2020-03-18
| |
* | Extracted transport part of the code into separate file.Vladimir Homutov2020-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All code dealing with serializing/deserializing is moved int srv/event/ngx_event_quic_transport.c/h file. All macros for dealing with data are internal to source file. The header file exposes frame types and error codes. The exported functions are currently packet header parsers and writers and frames parser/writer. The ngx_quic_header_t structure is updated with 'log' member. This avoids passing extra argument to parsing functions that need to report errors.
* | Split transport and crypto parts into separate files.Vladimir Homutov2020-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New files: src/event/ngx_event_quic_protection.h src/event/ngx_event_quic_protection.c The protection.h header provides interface to the crypto part of the QUIC: 2 functions to initialize corresponding secrets: ngx_quic_set_initial_secret() ngx_quic_set_encryption_secret() and 2 functions to deal with packet processing: ngx_quic_encrypt() ngx_quic_decrypt() Also, structures representing secrets are defined there. All functions require SSL connection and a pool, only crypto operations inside, no access to nginx connections or events. Currently pool->log is used for the logging (instead of original c->log).
* | HTTP/3.Roman Arutyunyan2020-03-13
| |
* | QUIC add_handshake_data callback, varint routines.Sergey Kandaurov2020-02-28
| |
* | Initial QUIC support in http.Sergey Kandaurov2020-02-28
|/
* Unconditional compilation of the postpone filter.Roman Arutyunyan2019-05-08
| | | | | | | | | | | | | | Postpone filter is an essential part of subrequest functionality. In absence of it a subrequest response body is sent to the client out of order with respect to the main request header and body, as well as other subrequests. For in-memory subrequests the response is also sent to the client instead of being stored in memory. Currently the postpone filter is automatically enabled if one of the following standard modules which are known to create subrequests is enabled: ssi, slice, addition. However a third-party module that creates subrequests can still be built without the postpone filter or be dynamically loaded in nginx built without it.
* Upstream: ngx_http_upstream_random module.Vladimir Homutov2018-06-15
| | | | | | | | | | | | | | | | | The module implements random load-balancing algorithm with optional second choice. In the latter case, the best of two servers is chosen, accounting number of connections and server weight. Example: upstream u { random [two [least_conn]]; server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }
* The gRPC proxy module.Maxim Dounin2018-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | The module allows passing requests to upstream gRPC servers. The module is built by default as long as HTTP/2 support is compiled in. Example configuration: grpc_pass 127.0.0.1:9000; Alternatively, the "grpc://" scheme can be used: grpc_pass grpc://127.0.0.1:9000; Keepalive support is available via the upstream keepalive module. Note that keepalive connections won't currently work with grpc-go as it fails to handle SETTINGS_HEADER_TABLE_SIZE. To use with SSL: grpc_pass grpcs://127.0.0.1:9000; SSL connections use ALPN "h2" when available. At least grpc-go works fine without ALPN, so if ALPN is not available we just establish a connection without it. Tested with grpc-c++ and grpc-go.
* HTTP/2: externalized various constants and interfaces.Maxim Dounin2018-03-17
|
* HTTP/2: push additional request headers (closes #1478).Ruslan Ermilov2018-02-15
| | | | | The Accept-Encoding, Accept-Language, and User-Agent header fields are now copied from the original request to pushed requests.
* Mirror module.Roman Arutyunyan2017-07-20
|
* Precontent phase.Roman Arutyunyan2017-07-20
| | | | | | | The phase is added instead of the try_files phase. Unlike the old phase, the new one supports registering multiple handlers. The try_files implementation is moved to a separate ngx_http_try_files_module, which now registers a precontent phase handler.