From 0b492c2bcc1abb32b65a7dd3264712d116fb741a Mon Sep 17 00:00:00 2001 From: ryepup <40441+ryepup@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:10:27 +0000 Subject: [PATCH] update reference.json --- reference-lib/package-lock.json | 4 +- reference-lib/package.json | 2 +- reference-lib/src/reference.json | 709 +++++++++++++++++++++++++++++-- 3 files changed, 682 insertions(+), 33 deletions(-) diff --git a/reference-lib/package-lock.json b/reference-lib/package-lock.json index a8454b7..b6e3807 100644 --- a/reference-lib/package-lock.json +++ b/reference-lib/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nginx/reference-lib", - "version": "1.1.22", + "version": "1.1.23", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nginx/reference-lib", - "version": "1.1.22", + "version": "1.1.23", "license": "Apache-2.0", "devDependencies": { "@rollup/plugin-json": "^6.1.0", diff --git a/reference-lib/package.json b/reference-lib/package.json index 54e349e..4b7f50e 100644 --- a/reference-lib/package.json +++ b/reference-lib/package.json @@ -1,6 +1,6 @@ { "name": "@nginx/reference-lib", - "version": "1.1.22", + "version": "1.1.23", "description": "", "main": "dist/index.js", "type": "module", diff --git a/reference-lib/src/reference.json b/reference-lib/src/reference.json index 53bf66a..e22479f 100644 --- a/reference-lib/src/reference.json +++ b/reference-lib/src/reference.json @@ -2818,6 +2818,24 @@ "id": "/en/docs/http/ngx_http_fastcgi_module.html", "name": "ngx_http_fastcgi_module", "directives": [ + { + "name": "fastcgi_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to a FastCGI server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a FastCGI server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n location / {\n fastcgi_pass localhost:9000;\n fastcgi_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to a FastCGI server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a FastCGI server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    location / {\n        fastcgi_pass           localhost:9000;\n        fastcgi_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "fastcgi_bind", "default": "", @@ -2836,6 +2854,24 @@ "description_md": "Makes outgoing connections to a FastCGI server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value `off` (1.3.12) cancels the effect\nof the `fastcgi_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to a FastCGI server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nfastcgi_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the FastCGI server.", "description_html": "

Makes outgoing connections to a FastCGI server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value off (1.3.12) cancels the effect\nof the fastcgi_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to a FastCGI server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
fastcgi_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the FastCGI server.

\n" }, + { + "name": "fastcgi_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "fastcgi_buffer_size", "default": "4k|8k", @@ -3383,14 +3419,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" + "

error | timeout | denied | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "fastcgi_next_upstream_timeout", @@ -3571,6 +3607,24 @@ "description_md": "Enables or disables buffering of a client request body.\n\nWhen buffering is enabled, the entire request body is\n[read](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\nfrom the client before sending the request to a FastCGI server.\n\nWhen buffering is disabled, the request body is sent to the FastCGI server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\n[next server](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream)\nif nginx already started sending the request body.", "description_html": "

Enables or disables buffering of a client request body.

\n\n

When buffering is enabled, the entire request body is\nread\nfrom the client before sending the request to a FastCGI server.

\n\n

When buffering is disabled, the request body is sent to the FastCGI server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\nnext server\nif nginx already started sending the request body.

\n" }, + { + "name": "fastcgi_request_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Enables or disables creation of a separate request instance\nfor each FastCGI server.\nBy default, a single request is used for all FastCGI servers.\nIf the directive is set to the value “`on`”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific \"Host\" request header field\ncan be set:\n```\nproxy_request_dynamic on;\nproxy_set_header Host $upstream_last_server_name;\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Enables or disables creation of a separate request instance\nfor each FastCGI server.\nBy default, a single request is used for all FastCGI servers.\nIf the directive is set to the value “on”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific “Host” request header field\ncan be set:

\n\n
proxy_request_dynamic on;\nproxy_set_header      Host $upstream_last_server_name;\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "fastcgi_send_lowat", "default": "0", @@ -3861,6 +3915,24 @@ "id": "/en/docs/http/ngx_http_grpc_module.html", "name": "ngx_http_grpc_module", "directives": [ + { + "name": "grpc_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`address`*" + ], + "syntax_html": [ + "

address

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to a gRPC server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a gRPC server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n http2 on;\n\n location / {\n grpc_pass localhost:9000;\n grpc_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to a gRPC server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a gRPC server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n    http2 on;\n\n    location / {\n        grpc_pass           localhost:9000;\n        grpc_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "grpc_bind", "default": "", @@ -3879,6 +3951,24 @@ "description_md": "Makes outgoing connections to a gRPC server originate\nfrom the specified local IP address with an optional port.\nParameter value can contain variables.\nThe special value `off` cancels the effect\nof the `grpc_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter allows\noutgoing connections to a gRPC server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\ngrpc_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the gRPC server.", "description_html": "

Makes outgoing connections to a gRPC server originate\nfrom the specified local IP address with an optional port.\nParameter value can contain variables.\nThe special value off cancels the effect\nof the grpc_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter allows\noutgoing connections to a gRPC server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
grpc_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the gRPC server.

\n" }, + { + "name": "grpc_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "grpc_buffer_size", "default": "4k|8k", @@ -3978,14 +4068,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off

\n" + "

error | timeout | denied | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_502`\n\n a server returned a response with the code 502;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_504`\n\n a server returned a response with the code 504;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429;\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server;\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_502`,\n`http_503`, `http_504`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_502,\nhttp_503, http_504,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_502`\n\n a server returned a response with the code 502;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_504`\n\n a server returned a response with the code 504;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429;\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server;\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_502`,\n`http_503`, `http_504`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_502,\nhttp_503, http_504,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "grpc_next_upstream_timeout", @@ -4076,6 +4166,24 @@ "description_md": "Defines a timeout for reading a response from the gRPC server.\nThe timeout is set only between two successive read operations,\nnot for the transmission of the whole response.\nIf the gRPC server does not transmit anything within this time,\nthe connection is closed.", "description_html": "

Defines a timeout for reading a response from the gRPC server.\nThe timeout is set only between two successive read operations,\nnot for the transmission of the whole response.\nIf the gRPC server does not transmit anything within this time,\nthe connection is closed.

\n" }, + { + "name": "grpc_request_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Enables or disables creation of a separate request instance\nfor each gRPC server.\nBy default, a single request is used for all gRPC servers.\nIf the directive is set to the value “`on`”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific \"Host\" request header field\ncan be set:\n```\nproxy_request_dynamic on;\nproxy_set_header Host $upstream_last_server_name;\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Enables or disables creation of a separate request instance\nfor each gRPC server.\nBy default, a single request is used for all gRPC servers.\nIf the directive is set to the value “on”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific “Host” request header field\ncan be set:

\n\n
proxy_request_dynamic on;\nproxy_set_header      Host $upstream_last_server_name;\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "grpc_send_timeout", "default": "60s", @@ -5894,6 +6002,24 @@ "id": "/en/docs/http/ngx_http_memcached_module.html", "name": "ngx_http_memcached_module", "directives": [ + { + "name": "memcached_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to a memcached server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a memcached server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n location / {\n memcached_pass host:11211;\n memcached_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to a memcached server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a memcached server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    location / {\n        memcached_pass           host:11211;\n        memcached_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "memcached_bind", "default": "", @@ -5912,6 +6038,24 @@ "description_md": "Makes outgoing connections to a memcached server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value `off` (1.3.12) cancels the effect\nof the `memcached_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to a memcached server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nmemcached_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the memcached server.", "description_html": "

Makes outgoing connections to a memcached server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value off (1.3.12) cancels the effect\nof the memcached_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to a memcached server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
memcached_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the memcached server.

\n" }, + { + "name": "memcached_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "memcached_buffer_size", "default": "4k|8k", @@ -5975,14 +6119,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_response` | `not_found` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_response` | `not_found` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_response | not_found | off

\n" + "

error | timeout | denied | invalid_response | not_found | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_response`\n\n a server returned an empty or invalid response;\n- `not_found`\n\n a response was not found on the server;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_response` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe case of `not_found`\nis never considered an unsuccessful attempt.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_response are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe case of not_found\nis never considered an unsuccessful attempt.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_response`\n\n a server returned an empty or invalid response;\n- `not_found`\n\n a response was not found on the server;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_response` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe case of `not_found`\nis never considered an unsuccessful attempt.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_response are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe case of not_found\nis never considered an unsuccessful attempt.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "memcached_next_upstream_timeout", @@ -6254,6 +6398,28 @@ } ] }, + { + "id": "/en/docs/http/ngx_http_num_map_module.html", + "name": "ngx_http_num_map_module", + "directives": [ + { + "name": "num_map", + "default": "", + "contexts": [ + "http" + ], + "syntax_md": [ + "[*`$number`*] *`$variable`* `{...}`" + ], + "syntax_html": [ + "

[$number] $variable {...}

\n" + ], + "isBlock": true, + "description_md": "Describes how the values of the specified variable depend on numeric values\nor numeric value ranges.\n\n> Since variables are evaluated only when used, the mere existence\n> of even a large number of declared “`num_map`” variables\n> does not cause any extra costs for request processing.\n\nParameters inside the `num_map` block specify a mapping\nbetween source and resulting values.\n\nSource values are specified as numbers or as numeric ranges.\n\nThe following special parameters are also supported:\n- `default`\n\n sets the resulting value if the source value matches none\n of the specified variants.\n When `default` is not specified, the default\n resulting value will be an empty string.\n- `include`\n\n includes a file with values.\n There can be several inclusions.\n- `volatile`\n\n indicates that the variable is not cacheable.", + "description_html": "

Describes how the values of the specified variable depend on numeric values\nor numeric value ranges.

\n\n
\n

Since variables are evaluated only when used, the mere existence\nof even a large number of declared “num_map” variables\ndoes not cause any extra costs for request processing.

\n
\n\n

Parameters inside the num_map block specify a mapping\nbetween source and resulting values.

\n\n

Source values are specified as numbers or as numeric ranges.

\n\n

The following special parameters are also supported:

\n\n\n" + } + ] + }, { "id": "/en/docs/http/ngx_http_oidc_module.html", "name": "ngx_http_oidc_module", @@ -6337,8 +6503,8 @@ "

string

\n" ], "isBlock": false, - "description_md": "Specifies a secret value\nused to authenticate the Relying Party with the OpenID Provider.", - "description_html": "

Specifies a secret value\nused to authenticate the Relying Party with the OpenID Provider.

\n" + "description_md": "Specifies a secret value\nused to authenticate the Relying Party with the OpenID Provider.\nThe supported\n[authentication methods](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) are\n`client_secret_basic` and\n`client_secret_post` (1.29.3).\nThe method is selected based on the OpenID Provider metadata\nwith a preference to `client_secret_basic`.", + "description_html": "

Specifies a secret value\nused to authenticate the Relying Party with the OpenID Provider.\nThe supported\nauthentication methods are\nclient_secret_basic and\nclient_secret_post (1.29.3).\nThe method is selected based on the OpenID Provider metadata\nwith a preference to client_secret_basic.

\n" }, { "name": "config_url", @@ -6388,6 +6554,38 @@ "description_md": "Sets additional query arguments for the\n[authentication request](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) URL.\n```\nextra_auth_args \"display=page&prompt=login\";\n```", "description_html": "

Sets additional query arguments for the\nauthentication request URL.

\n\n
extra_auth_args "display=page&prompt=login";\n
\n" }, + { + "name": "frontchannel_logout_uri", + "default": "", + "contexts": [ + "oidc_provider" + ], + "syntax_md": [ + "*`uri`*" + ], + "syntax_html": [ + "

uri

\n" + ], + "isBlock": false, + "description_md": "Defines the URI path for triggering\n[front-channel logout](https://openid.net/specs/openid-connect-frontchannel-1_0.html).\nFor the logout request to be associated with a user session,\nit must either include the module session cookie or provide\nboth the “`iss`” and “`sid`” arguments.\nIt is recommended to configure the OpenID Provider to set the\n“`iss`” and “`sid`” arguments\nwhen invoking this endpoint.", + "description_html": "

Defines the URI path for triggering\nfront-channel logout.\nFor the logout request to be associated with a user session,\nit must either include the module session cookie or provide\nboth the “iss” and “sid” arguments.\nIt is recommended to configure the OpenID Provider to set the\n“iss” and “sid” arguments\nwhen invoking this endpoint.

\n" + }, + { + "name": "pkce", + "default": "", + "contexts": [ + "oidc_provider" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Explicitly enables or disables PKCE.\nBy default, PKCE is automatically enabled\nbased on OpenID Provider metadata.", + "description_html": "

Explicitly enables or disables PKCE.\nBy default, PKCE is automatically enabled\nbased on OpenID Provider metadata.

\n" + }, { "name": "redirect_uri", "default": "/oidc_callback", @@ -6647,6 +6845,24 @@ "id": "/en/docs/http/ngx_http_proxy_module.html", "name": "ngx_http_proxy_module", "directives": [ + { + "name": "proxy_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to a proxied server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a proxied server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n location / {\n proxy_pass localhost:8000;\n proxy_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to a proxied server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a proxied server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    location / {\n        proxy_pass           localhost:8000;\n        proxy_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "proxy_bind", "default": "", @@ -6665,6 +6881,24 @@ "description_md": "Makes outgoing connections to a proxied server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value `off` (1.3.12) cancels the effect\nof the `proxy_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to a proxied server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nproxy_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the proxied server.", "description_html": "

Makes outgoing connections to a proxied server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value off (1.3.12) cancels the effect\nof the proxy_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to a proxied server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
proxy_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the proxied server.

\n" }, + { + "name": "proxy_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "proxy_buffer_size", "default": "4k|8k", @@ -7306,14 +7540,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off

\n" + "

error | timeout | denied | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_502`\n\n a server returned a response with the code 502;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_504`\n\n a server returned a response with the code 504;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_502`,\n`http_503`, `http_504`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_502,\nhttp_503, http_504,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_502`\n\n a server returned a response with the code 502;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_504`\n\n a server returned a response with the code 504;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_502`,\n`http_503`, `http_504`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_502,\nhttp_503, http_504,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "proxy_next_upstream_timeout", @@ -7517,6 +7751,24 @@ "description_md": "Enables or disables buffering of a client request body.\n\nWhen buffering is enabled, the entire request body is\n[read](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\nfrom the client before sending the request to a proxied server.\n\nWhen buffering is disabled, the request body is sent to the proxied server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\n[next server](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream)\nif nginx already started sending the request body.\n\nWhen HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value unless\nHTTP/1.1 is [enabled](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version) for proxying.", "description_html": "

Enables or disables buffering of a client request body.

\n\n

When buffering is enabled, the entire request body is\nread\nfrom the client before sending the request to a proxied server.

\n\n

When buffering is disabled, the request body is sent to the proxied server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\nnext server\nif nginx already started sending the request body.

\n\n

When HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value unless\nHTTP/1.1 is enabled for proxying.

\n" }, + { + "name": "proxy_request_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Enables or disables creation of a separate request instance\nfor each proxied server.\nBy default, a single request is used for all proxied servers.\nIf the directive is set to the value “`on`”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific \"Host\" request header field\ncan be set:\n```\nproxy_request_dynamic on;\nproxy_set_header Host $upstream_last_server_name;\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Enables or disables creation of a separate request instance\nfor each proxied server.\nBy default, a single request is used for all proxied servers.\nIf the directive is set to the value “on”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific “Host” request header field\ncan be set:

\n\n
proxy_request_dynamic on;\nproxy_set_header      Host $upstream_last_server_name;\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "proxy_send_lowat", "default": "0", @@ -8269,6 +8521,24 @@ "id": "/en/docs/http/ngx_http_scgi_module.html", "name": "ngx_http_scgi_module", "directives": [ + { + "name": "scgi_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to an SCGI server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to an SCGI server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n location / {\n scgi_pass localhost:9000;\n scgi_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to an SCGI server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to an SCGI server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    location / {\n        scgi_pass           localhost:9000;\n        scgi_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "scgi_bind", "default": "", @@ -8287,6 +8557,24 @@ "description_md": "Makes outgoing connections to an SCGI server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value `off` (1.3.12) cancels the effect\nof the `scgi_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to an SCGI server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nscgi_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the SCGI server.", "description_html": "

Makes outgoing connections to an SCGI server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value off (1.3.12) cancels the effect\nof the scgi_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to an SCGI server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
scgi_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the SCGI server.

\n" }, + { + "name": "scgi_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "scgi_buffer_size", "default": "4k|8k", @@ -8780,14 +9068,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" + "

error | timeout | denied | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "scgi_next_upstream_timeout", @@ -8968,6 +9256,24 @@ "description_md": "Enables or disables buffering of a client request body.\n\nWhen buffering is enabled, the entire request body is\n[read](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\nfrom the client before sending the request to an SCGI server.\n\nWhen buffering is disabled, the request body is sent to the SCGI server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\n[next server](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream)\nif nginx already started sending the request body.\n\nWhen HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value.", "description_html": "

Enables or disables buffering of a client request body.

\n\n

When buffering is enabled, the entire request body is\nread\nfrom the client before sending the request to an SCGI server.

\n\n

When buffering is disabled, the request body is sent to the SCGI server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\nnext server\nif nginx already started sending the request body.

\n\n

When HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value.

\n" }, + { + "name": "scgi_request_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Enables or disables creation of a separate request instance\nfor each SCGI server.\nBy default, a single request is used for all SCGI servers.\nIf the directive is set to the value “`on`”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific \"Host\" request header field\ncan be set:\n```\nproxy_request_dynamic on;\nproxy_set_header Host $upstream_last_server_name;\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Enables or disables creation of a separate request instance\nfor each SCGI server.\nBy default, a single request is used for all SCGI servers.\nIf the directive is set to the value “on”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific “Host” request header field\ncan be set:

\n\n
proxy_request_dynamic on;\nproxy_set_header      Host $upstream_last_server_name;\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "scgi_send_timeout", "default": "60s", @@ -10257,11 +10563,251 @@ ] }, { - "id": "/en/docs/http/ngx_http_upstream_conf_module.html", - "name": "ngx_http_upstream_conf_module", + "id": "/en/docs/http/ngx_http_tunnel_module.html", + "name": "ngx_http_tunnel_module", "directives": [ { - "name": "upstream_conf", + "name": "tunnel_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to the backend server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a backend server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n tunnel_pass;\n tunnel_allow_upstream $allow;\n}\n```", + "description_html": "

Defines conditions under which access to the backend server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a backend server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    tunnel_pass;\n    tunnel_allow_upstream $allow;\n}\n
\n" + }, + { + "name": "tunnel_bind", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`address`* | `off`" + ], + "syntax_html": [ + "

address | off

\n" + ], + "isBlock": false, + "description_md": "Makes outgoing connections to a backend server originate\nfrom the specified local IP address with an optional port.\nParameter value can contain variables.\nThe special value `off` cancels the effect\nof the `tunnel_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.", + "description_html": "

Makes outgoing connections to a backend server originate\nfrom the specified local IP address with an optional port.\nParameter value can contain variables.\nThe special value off cancels the effect\nof the tunnel_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n" + }, + { + "name": "tunnel_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [`tunnel_bind`](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_bind) operation\nat each connection attempt:\n```\ngeo $upstream_last_addr $bind_addr {\n volatile;\n 10.0.0.0/24 10.0.0.1;\n 192.168.0.0/24 192.168.0.1;\n}\n\ntunnel_bind $bind_addr;\ntunnel_bind_dynamic on;\n```", + "description_html": "

When enabled, makes the tunnel_bind operation\nat each connection attempt:

\n\n
geo $upstream_last_addr $bind_addr {\n    volatile;\n    10.0.0.0/24    10.0.0.1;\n    192.168.0.0/24  192.168.0.1;\n}\n\ntunnel_bind         $bind_addr;\ntunnel_bind_dynamic on;\n
\n" + }, + { + "name": "tunnel_buffer_size", + "default": "16k", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`size`*" + ], + "syntax_html": [ + "

size

\n" + ], + "isBlock": false, + "description_md": "Sets the *`size`* of the buffer used for reading data\nfrom the backend server.\nAlso sets the *`size`* of the buffer used for reading data\nfrom the client.", + "description_html": "

Sets the size of the buffer used for reading data\nfrom the backend server.\nAlso sets the size of the buffer used for reading data\nfrom the client.

\n" + }, + { + "name": "tunnel_connect_timeout", + "default": "60s", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`time`*" + ], + "syntax_html": [ + "

time

\n" + ], + "isBlock": false, + "description_md": "Defines a timeout for establishing a connection with a backend server.\nIt should be noted that this timeout cannot usually exceed 75 seconds.", + "description_html": "

Defines a timeout for establishing a connection with a backend server.\nIt should be noted that this timeout cannot usually exceed 75 seconds.

\n" + }, + { + "name": "tunnel_next_upstream", + "default": "error timeout", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`error` | `timeout` | `denied` | `off` ..." + ], + "syntax_html": [ + "

error | timeout | denied | off

\n" + ], + "isBlock": false, + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server or reading data from the server;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading data from the server;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_allow_upstream)\n the connection;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\nand `denied`\nare always considered unsuccessful attempts,\neven if they are not specified in the directive.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\nand denied\nare always considered unsuccessful attempts,\neven if they are not specified in the directive.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + }, + { + "name": "tunnel_next_upstream_timeout", + "default": "0", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`time`*" + ], + "syntax_html": [ + "

time

\n" + ], + "isBlock": false, + "description_md": "Limits the time during which a request can be passed to the\n[next server](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_next_upstream).\nThe `0` value turns off this limitation.", + "description_html": "

Limits the time during which a request can be passed to the\nnext server.\nThe 0 value turns off this limitation.

\n" + }, + { + "name": "tunnel_next_upstream_tries", + "default": "0", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`number`*" + ], + "syntax_html": [ + "

number

\n" + ], + "isBlock": false, + "description_md": "Limits the number of possible tries for passing a request to the\n[next server](https://nginx.org/en/docs/http/ngx_http_tunnel_module.html#tunnel_next_upstream).\nThe `0` value turns off this limitation.", + "description_html": "

Limits the number of possible tries for passing a request to the\nnext server.\nThe 0 value turns off this limitation.

\n" + }, + { + "name": "tunnel_pass", + "default": "", + "contexts": [ + "server", + "location", + "if in location" + ], + "syntax_md": [ + "[*`address`*]" + ], + "syntax_html": [ + "

[address]

\n" + ], + "isBlock": false, + "description_md": "Enables handling of CONNECT requests and sets the address of a backend server.\nBy default, the `address` is\n*`$host:$request_port`* and is taken from the client request.\nIn most cases, `tunnel_pass` does not require\nconfiguring any arguments.\n\nThe address can be specified as a domain name or IP address,\nand a port:\n```\ntunnel_pass localhost:9000;\n```\nor as a UNIX-domain socket path:\n```\ntunnel_pass unix:/tmp/backend.socket;\n```\n\nIf a domain name resolves to several addresses, all of them will be\nused in a round-robin fashion.\nIn addition, an address can be specified as a\n[server group](https://nginx.org/en/docs/http/ngx_http_upstream_module.html).\n\nParameter value can contain variables.\nIn this case, if an address is specified as a domain name,\nthe name is searched among the described\n[server groups](https://nginx.org/en/docs/http/ngx_http_upstream_module.html),\nand, if not found, is determined using a\n[`resolver`](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver).", + "description_html": "

Enables handling of CONNECT requests and sets the address of a backend server.\nBy default, the address is\n$host:$request_port and is taken from the client request.\nIn most cases, tunnel_pass does not require\nconfiguring any arguments.

\n\n

The address can be specified as a domain name or IP address,\nand a port:

\n\n
tunnel_pass localhost:9000;\n
\n\n

or as a UNIX-domain socket path:

\n\n
tunnel_pass unix:/tmp/backend.socket;\n
\n\n

If a domain name resolves to several addresses, all of them will be\nused in a round-robin fashion.\nIn addition, an address can be specified as a\nserver group.

\n\n

Parameter value can contain variables.\nIn this case, if an address is specified as a domain name,\nthe name is searched among the described\nserver groups,\nand, if not found, is determined using a\nresolver.

\n" + }, + { + "name": "tunnel_read_timeout", + "default": "60s", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`time`*" + ], + "syntax_html": [ + "

time

\n" + ], + "isBlock": false, + "description_md": "Sets the timeout between two successive read or write operations\non client or backend server connections. \nIf no data is transmitted within this time, the connection is closed.", + "description_html": "

Sets the timeout between two successive read or write operations\non client or backend server connections.\nIf no data is transmitted within this time, the connection is closed.

\n" + }, + { + "name": "tunnel_send_lowat", + "default": "0", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`size`*" + ], + "syntax_html": [ + "

size

\n" + ], + "isBlock": false, + "description_md": "If the directive is set to a non-zero value, nginx will try to\nminimize the number\nof send operations on outgoing connections to a backend server by using either\n`NOTE_LOWAT` flag of the\n[`kqueue`](https://nginx.org/en/docs/events.html#kqueue) method,\nor the `SO_SNDLOWAT` socket option,\nwith the specified *`size`*.\n\nThis directive is ignored on Linux, Solaris, and Windows.", + "description_html": "

If the directive is set to a non-zero value, nginx will try to\nminimize the number\nof send operations on outgoing connections to a backend server by using either\nNOTE_LOWAT flag of the\nkqueue method,\nor the SO_SNDLOWAT socket option,\nwith the specified size.

\n\n

This directive is ignored on Linux, Solaris, and Windows.

\n" + }, + { + "name": "tunnel_send_timeout", + "default": "60s", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`time`*" + ], + "syntax_html": [ + "

time

\n" + ], + "isBlock": false, + "description_md": "Sets a timeout for transmitting a request to the backend server.\nThe timeout is set only between two successive write operations,\nnot for the transmission of the whole request.\nIf the backend server does not receive anything within this time,\nthe connection is closed.", + "description_html": "

Sets a timeout for transmitting a request to the backend server.\nThe timeout is set only between two successive write operations,\nnot for the transmission of the whole request.\nIf the backend server does not receive anything within this time,\nthe connection is closed.

\n" + }, + { + "name": "tunnel_socket_keepalive", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Configures the “TCP keepalive” behavior\nfor outgoing connections to a backend server.\nBy default, the operating system’s settings are in effect for the socket.\nIf the directive is set to the value “`on`”, the\n`SO_KEEPALIVE` socket option is turned on for the socket.", + "description_html": "

Configures the “TCP keepalive” behavior\nfor outgoing connections to a backend server.\nBy default, the operating system’s settings are in effect for the socket.\nIf the directive is set to the value “on”, the\nSO_KEEPALIVE socket option is turned on for the socket.

\n" + } + ] + }, + { + "id": "/en/docs/http/ngx_http_upstream_conf_module.html", + "name": "ngx_http_upstream_conf_module", + "directives": [ + { + "name": "upstream_conf", "default": "", "contexts": [ "location" @@ -10670,6 +11216,11 @@ "description_md": "keep server response header fields.\nFor example, the \"Server\" response header field\nis available through the `$upstream_http_server` variable.\nThe rules of converting header field names to variable names are the same\nas for the variables that start with the\n“[$http_](https://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_)” prefix.\nOnly the header fields from the response of the last server are saved.", "description_html": "

keep server response header fields.\nFor example, the “Server” response header field\nis available through the $upstream_http_server variable.\nThe rules of converting header field names to variable names are the same\nas for the variables that start with the\n“$http_” prefix.\nOnly the header fields from the response of the last server are saved.

\n" }, + { + "name": "$upstream_last_addr", + "description_md": "keeps the IP address or the path to the UNIX-domain socket\nof the last selected upstream server (1.29.3).\n\n\n> This variable is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

keeps the IP address or the path to the UNIX-domain socket\nof the last selected upstream server (1.29.3).

\n\n
\n

This variable is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "$upstream_last_server_name", "description_md": "keeps the name of last selected upstream server (1.25.3);\nallows passing it\n[through SNI](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name):\n```\nproxy_ssl_server_name on;\nproxy_ssl_name $upstream_last_server_name;\n```\n\n\n> This variable is available as part of our\n> [commercial subscription](https://nginx.com/products/).", @@ -10891,6 +11442,24 @@ "id": "/en/docs/http/ngx_http_uwsgi_module.html", "name": "ngx_http_uwsgi_module", "directives": [ + { + "name": "uwsgi_allow_upstream", + "default": "", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "*`string`* ..." + ], + "syntax_html": [ + "

string

\n" + ], + "isBlock": false, + "description_md": "Defines conditions under which access to a uwsgi server\nis allowed or [denied](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#denied).\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a uwsgi server is established.\nParameter values can contain variables:\n```\ngeo $upstream_last_addr $allow {\n volatile;\n 10.10.0.0/24 1;\n}\n\nserver {\n listen 127.0.0.1:8080;\n\n location / {\n uwsgi_pass localhost:9000;\n uwsgi_allow_upstream $allow;\n ...\n }\n}\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Defines conditions under which access to a uwsgi server\nis allowed or denied.\nIf all string parameters are not empty\nand not equal to “0” then the access is allowed.\nThe conditions are evaluated each time\nbefore a connection to a uwsgi server is established.\nParameter values can contain variables:

\n\n
geo $upstream_last_addr $allow {\n    volatile;\n    10.10.0.0/24        1;\n}\n\nserver {\n    listen 127.0.0.1:8080;\n\n    location / {\n        uwsgi_pass           localhost:9000;\n        uwsgi_allow_upstream $allow;\n        ...\n    }\n}\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "uwsgi_bind", "default": "", @@ -10909,6 +11478,24 @@ "description_md": "Makes outgoing connections to a uwsgi server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value `off` (1.3.12) cancels the effect\nof the `uwsgi_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to a uwsgi server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nuwsgi_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the uwsgi server.", "description_html": "

Makes outgoing connections to a uwsgi server originate\nfrom the specified local IP address with an optional port (1.11.2).\nParameter value can contain variables (1.3.12).\nThe special value off (1.3.12) cancels the effect\nof the uwsgi_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address and port.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to a uwsgi server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
uwsgi_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the uwsgi server.

\n" }, + { + "name": "uwsgi_bind_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "uwsgi_buffer_size", "default": "4k|8k", @@ -11438,14 +12025,14 @@ "location" ], "syntax_md": [ - "`error` | `timeout` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." + "`error` | `timeout` | `denied` | `invalid_header` | `http_500` | `http_503` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ..." ], "syntax_html": [ - "

error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" + "

error | timeout | denied | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off

\n" ], "isBlock": false, - "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_timeout).", - "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" + "description_md": "Specifies in which cases a request should be passed to the next server:\n- `error`\n\n an error occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `timeout`\n\n a timeout has occurred while establishing a connection with the\n server, passing a request to it, or reading the response header;\n- `denied`\n\n the server [denied](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_allow_upstream)\n the connection (1.29.3);\n \n > This parameter is available as part of our\n > [commercial subscription](https://nginx.com/products/).\n- `invalid_header`\n\n a server returned an empty or invalid response;\n- `http_500`\n\n a server returned a response with the code 500;\n- `http_503`\n\n a server returned a response with the code 503;\n- `http_403`\n\n a server returned a response with the code 403;\n- `http_404`\n\n a server returned a response with the code 404;\n- `http_429`\n\n a server returned a response with the code 429 (1.11.13);\n- `non_idempotent`\n\n normally, requests with a\n [non-idempotent](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)\n method\n (`POST`, `LOCK`, `PATCH`)\n are not passed to the next server\n if a request has been sent to an upstream server (1.9.13);\n enabling this option explicitly allows retrying such requests;\n- `off`\n\n disables passing a request to the next server.\n\nOne should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.\n\nThe directive also defines what is considered an\n[unsuccessful attempt](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails) of communication with a server.\nThe cases of `error`, `timeout`,\n`denied` and\n`invalid_header` are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of `http_500`, `http_503`,\nand `http_429` are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of `http_403` and `http_404`\nare never considered unsuccessful attempts.\n\nPassing a request to the next server can be limited by\n[the number of tries](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_tries)\nand by [time](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_timeout).", + "description_html": "

Specifies in which cases a request should be passed to the next server:

\n\n\n\n

One should bear in mind that passing a request to the next server is\nonly possible if nothing has been sent to a client yet.\nThat is, if an error or timeout occurs in the middle of the\ntransferring of a response, fixing this is impossible.

\n\n

The directive also defines what is considered an\nunsuccessful attempt of communication with a server.\nThe cases of error, timeout,\ndenied and\ninvalid_header are always considered unsuccessful attempts,\neven if they are not specified in the directive.\nThe cases of http_500, http_503,\nand http_429 are\nconsidered unsuccessful attempts only if they are specified in the directive.\nThe cases of http_403 and http_404\nare never considered unsuccessful attempts.

\n\n

Passing a request to the next server can be limited by\nthe number of tries\nand by time.

\n" }, { "name": "uwsgi_next_upstream_timeout", @@ -11626,6 +12213,24 @@ "description_md": "Enables or disables buffering of a client request body.\n\nWhen buffering is enabled, the entire request body is\n[read](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\nfrom the client before sending the request to a uwsgi server.\n\nWhen buffering is disabled, the request body is sent to the uwsgi server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\n[next server](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream)\nif nginx already started sending the request body.\n\nWhen HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value.", "description_html": "

Enables or disables buffering of a client request body.

\n\n

When buffering is enabled, the entire request body is\nread\nfrom the client before sending the request to a uwsgi server.

\n\n

When buffering is disabled, the request body is sent to the uwsgi server\nimmediately as it is received.\nIn this case, the request cannot be passed to the\nnext server\nif nginx already started sending the request body.

\n\n

When HTTP/1.1 chunked transfer encoding is used\nto send the original request body,\nthe request body will be buffered regardless of the directive value.

\n" }, + { + "name": "uwsgi_request_dynamic", + "default": "off", + "contexts": [ + "http", + "server", + "location" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "Enables or disables creation of a separate request instance\nfor each uwsgi server.\nBy default, a single request is used for all uwsgi servers.\nIf the directive is set to the value “`on`”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific \"Host\" request header field\ncan be set:\n```\nproxy_request_dynamic on;\nproxy_set_header Host $upstream_last_server_name;\n```\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

Enables or disables creation of a separate request instance\nfor each uwsgi server.\nBy default, a single request is used for all uwsgi servers.\nIf the directive is set to the value “on”,\na separate request instance is created,\nallowing per-server request customization.\nFor example, the server-specific “Host” request header field\ncan be set:

\n\n
proxy_request_dynamic on;\nproxy_set_header      Host $upstream_last_server_name;\n
\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "uwsgi_send_timeout", "default": "60s", @@ -15542,6 +16147,28 @@ } ] }, + { + "id": "/en/docs/stream/ngx_stream_num_map_module.html", + "name": "ngx_stream_num_map_module", + "directives": [ + { + "name": "num_map", + "default": "", + "contexts": [ + "stream" + ], + "syntax_md": [ + "[*`$number`*] *`$variable`* `{...}`" + ], + "syntax_html": [ + "

[$number] $variable {...}

\n" + ], + "isBlock": true, + "description_md": "Describes how the values of the specified variable depend on numeric values\nor numeric value ranges.\n\n> Since variables are evaluated only when used, the mere existence\n> of even a large number of declared “`num_map`” variables\n> does not cause any extra costs for connection processing.\n\nParameters inside the `num_map` block specify a mapping\nbetween source and resulting values.\n\nSource values are specified as numbers or as numeric ranges.\n\nThe following special parameters are also supported:\n- `default`\n\n sets the resulting value if the source value matches none\n of the specified variants.\n When `default` is not specified, the default\n resulting value will be an empty string.\n- `include`\n\n includes a file with values.\n There can be several inclusions.\n- `volatile`\n\n indicates that the variable is not cacheable.", + "description_html": "

Describes how the values of the specified variable depend on numeric values\nor numeric value ranges.

\n\n
\n

Since variables are evaluated only when used, the mere existence\nof even a large number of declared “num_map” variables\ndoes not cause any extra costs for connection processing.

\n
\n\n

Parameters inside the num_map block specify a mapping\nbetween source and resulting values.

\n\n

Source values are specified as numbers or as numeric ranges.

\n\n

The following special parameters are also supported:

\n\n\n" + } + ] + }, { "id": "/en/docs/stream/ngx_stream_pass_module.html", "name": "ngx_stream_pass_module", @@ -15585,6 +16212,23 @@ "description_md": "Makes outgoing connections to a proxied server originate\nfrom the specified local IP *`address`*.\nParameter value can contain variables (1.11.2).\nThe special value `off` cancels the effect\nof the `proxy_bind` directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address.\n\nThe `transparent` parameter (1.11.0) allows\noutgoing connections to a proxied server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:\n```\nproxy_bind $remote_addr transparent;\n```\nIn order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\n[superuser](https://nginx.org/en/docs/ngx_core_module.html#user) privileges.\nOn Linux it is not required (1.13.8) as if\nthe `transparent` parameter is specified, worker processes\ninherit the `CAP_NET_RAW` capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the proxied server.", "description_html": "

Makes outgoing connections to a proxied server originate\nfrom the specified local IP address.\nParameter value can contain variables (1.11.2).\nThe special value off cancels the effect\nof the proxy_bind directive\ninherited from the previous configuration level, which allows the\nsystem to auto-assign the local IP address.

\n\n

The transparent parameter (1.11.0) allows\noutgoing connections to a proxied server originate\nfrom a non-local IP address,\nfor example, from a real IP address of a client:

\n\n
proxy_bind $remote_addr transparent;\n
\n\n

In order for this parameter to work,\nit is usually necessary to run nginx worker processes with the\nsuperuser privileges.\nOn Linux it is not required (1.13.8) as if\nthe transparent parameter is specified, worker processes\ninherit the CAP_NET_RAW capability from the master process.\nIt is also necessary to configure kernel routing table\nto intercept network traffic from the proxied server.

\n" }, + { + "name": "proxy_bind_dynamic", + "default": "off", + "contexts": [ + "stream", + "server" + ], + "syntax_md": [ + "`on` | `off`" + ], + "syntax_html": [ + "

on | off

\n" + ], + "isBlock": false, + "description_md": "When enabled, makes the [bind](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_bind) operation\nat each connection attempt.\n\n> This directive is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

When enabled, makes the bind operation\nat each connection attempt.

\n\n
\n

This directive is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "proxy_buffer_size", "default": "16k", @@ -17144,6 +17788,11 @@ "description_md": "time to receive the first byte of data (1.11.4);\nthe time is kept in seconds with millisecond resolution.\nTimes of several connections\nare separated by commas like addresses in the\n[$upstream_addr](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#var_upstream_addr) variable.", "description_html": "

time to receive the first byte of data (1.11.4);\nthe time is kept in seconds with millisecond resolution.\nTimes of several connections\nare separated by commas like addresses in the\n$upstream_addr variable.

\n" }, + { + "name": "$upstream_last_addr", + "description_md": "keeps the IP address or the path to the UNIX-domain socket\nof the last selected upstream server (1.29.3).\n\n\n> This variable is available as part of our\n> [commercial subscription](https://nginx.com/products/).", + "description_html": "

keeps the IP address or the path to the UNIX-domain socket\nof the last selected upstream server (1.29.3).

\n\n
\n

This variable is available as part of our\ncommercial subscription.

\n
\n" + }, { "name": "$upstream_session_time", "description_md": "session duration in seconds with millisecond resolution (1.11.4).\nTimes of several connections\nare separated by commas like addresses in the\n[$upstream_addr](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#var_upstream_addr) variable.", @@ -17513,5 +18162,5 @@ ] } ], - "version": "https://github.com/nginx/nginx.org/commit/2a1517c5cdaaf2d3fc90dc289278f7d1afffe491" + "version": "https://github.com/nginx/nginx.org/commit/d90d0b7854816078daf804d188ee160e9edbf536" }