mirror of
https://github.com/dokku/dokku.git
synced 2025-12-16 03:57:43 +01:00
feat: add support for various timeout-related functions to nginx, openresty and k3s plugins
Closes #7267
This commit is contained in:
@@ -190,7 +190,7 @@ Sometimes it may be desirable to set a different path for a given app, e.g. when
|
||||
dokku nginx:set node-js-app nginx-conf-sigil-path .dokku/nginx.conf.sigil
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `nginx.conf.sigil`.
|
||||
The value is the path to the desired file _relative_ to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `nginx.conf.sigil`.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
@@ -315,28 +315,35 @@ Changing these value globally or on a per-app basis will require rebuilding the
|
||||
> [!WARNING]
|
||||
> Validation is not performed against the values, and they are used as is within Dokku.
|
||||
|
||||
| Property | Default | Type | Explanation |
|
||||
| Property | Default | Type | Explanation |
|
||||
| --------------------------|---------------------------------------|---------|-------------------------------------------------------------------------------------|
|
||||
| access-log-format | empty string | string | Name of custom log format to use (log format must be specified elsewhere) |
|
||||
| access-log-path | `${NGINX_LOG_ROOT}/${APP}-access.log` | string | Log path for nginx access logs (set to `off` to disable) |
|
||||
| bind-address-ipv4 | `0.0.0.0` | string | Default IPv4 address to bind to |
|
||||
| bind-address-ipv6 | `[::]` | string | Default IPv6 address to bind to |
|
||||
| client-max-body-size | `1m` | string | Size (with units) of client request body (usually modified for file uploads) |
|
||||
| client-body-timeout | `60s` | string | Timeout (with units) for reading the client request body |
|
||||
| client-header-timeout | `60s` | string | Timeout (with units) for reading the client request headers |
|
||||
| error-log-path | `${NGINX_LOG_ROOT}/${APP}-error.log` | string | Log path for nginx error logs (set to `off` to disable) |
|
||||
| hsts | `true` | boolean | Enables or disables HSTS for your application |
|
||||
| hsts-include-subdomains | `true` | boolean | Forces the browser to apply the HSTS policy to all app subdomains |
|
||||
| hsts-max-age | `15724800` | integer | Time in seconds to cache HSTS configuration |
|
||||
| hsts-preload | `false` | boolean | Tells the browser to include the domain in their HSTS preload lists |
|
||||
| keepalive-timeout | `75s` | string | Timeout (with units) during which a keep-alive client connection will stay open on the server side |
|
||||
| lingering-timeout | `5s` | string | Timeout (with units) is the maximum waiting time for more client data to arrive |
|
||||
| nginx-conf-sigil-path | `nginx.conf.sigil` | string | Path in the repository to the `nginx.conf.sigil` file |
|
||||
| proxy-buffer-size | `8k` (# is os pagesize) | string | Size of the buffer used for reading the first part of proxied server response |
|
||||
| proxy-buffering | `on` | string | Enables or disables buffering of responses from the proxied server |
|
||||
| proxy-buffers | `8 8k` | string | Number and size of the buffers used for reading the proxied server response, for a single connection |
|
||||
| proxy-busy-buffers-size | `16k` | string | Limits the total size of buffers that can be busy sending a response to the client while the response is not yet fully read. |
|
||||
| proxy-connect-timeout | `60s` | string | Timeout (with units) for establishing a connection to your backend server |
|
||||
| proxy-read-timeout | `60s` | string | Timeout (with units) for reading response from your backend server |
|
||||
| proxy-send-timeout | `60s` | string | Timeout (with units) for transmitting a request to your backend server |
|
||||
| send-timeout | `60s` | string | Timeout (with units) for transmitting a response to your the client |
|
||||
| underscore-in-headers | `off` | string | Enables or disables the use of underscores in client request header fields. |
|
||||
| x-forwarded-for-value | `$remote_addr` | string | Used for specifying the header value to set for the `X-Forwarded-For` header |
|
||||
| x-forwarded-port-value | `$server_port` | string | Used for specifying the header value to set for the `X-Forwarded-Port` header |
|
||||
| x-forwarded-proto-value | `$scheme` | string | Used for specifying the header value to set for the `X-Forwarded-Proto` header |
|
||||
| x-forwarded-for-value | `$remote_addr` | string | Used for specifying the header value to set for the `X-Forwarded-For` header |
|
||||
| x-forwarded-port-value | `$server_port` | string | Used for specifying the header value to set for the `X-Forwarded-Port` header |
|
||||
| x-forwarded-proto-value | `$scheme` | string | Used for specifying the header value to set for the `X-Forwarded-Proto` header |
|
||||
| x-forwarded-ssl | empty string | string | Less commonly used alternative to `X-Forwarded-Proto` (valid values: `on` or `off`) |
|
||||
|
||||
#### Binding to specific addresses
|
||||
@@ -377,7 +384,6 @@ Properties:
|
||||
- `x-forwarded-proto-value`
|
||||
- `x-forwarded-ssl`
|
||||
|
||||
|
||||
Dokku's default Nginx configuration passes the de-facto standard HTTP headers [`X-Forwarded-For`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For), [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto), and `X-Forwarded-Port` to your application.
|
||||
These headers indicate the IP address of the original client making the request, the protocol of the original request (HTTP or HTTPS), and the port number of the original request, respectively.
|
||||
|
||||
@@ -469,7 +475,6 @@ This property is commonly used to increase the max file upload size.
|
||||
|
||||
Changing this value when using the PHP buildpack (or any other buildpack that uses an intermediary server) will require changing the value in the server config shipped with that buildpack. Consult your buildpack documentation for further details.
|
||||
|
||||
|
||||
## Other
|
||||
|
||||
### Domains plugin
|
||||
|
||||
@@ -49,6 +49,12 @@ cmd-nginx-report-single() {
|
||||
"--nginx-bind-address-ipv6: $(fn-nginx-bind-address-ipv6 "$APP")"
|
||||
"--nginx-computed-bind-address-ipv6: $(fn-nginx-computed-bind-address-ipv6 "$APP")"
|
||||
"--nginx-global-bind-address-ipv6: $(fn-nginx-global-bind-address-ipv6 "$APP")"
|
||||
"--nginx-client-body-timeout: $(fn-nginx-client-body-timeout "$APP")"
|
||||
"--nginx-computed-client-body-timeout: $(fn-nginx-computed-client-body-timeout "$APP")"
|
||||
"--nginx-global-client-body-timeout: $(fn-nginx-global-client-body-timeout "$APP")"
|
||||
"--nginx-client-header-timeout: $(fn-nginx-client-header-timeout "$APP")"
|
||||
"--nginx-computed-client-header-timeout: $(fn-nginx-computed-client-header-timeout "$APP")"
|
||||
"--nginx-global-client-header-timeout: $(fn-nginx-global-client-header-timeout "$APP")"
|
||||
"--nginx-client-max-body-size: $(fn-nginx-client-max-body-size "$APP")"
|
||||
"--nginx-computed-client-max-body-size: $(fn-nginx-computed-client-max-body-size "$APP")"
|
||||
"--nginx-global-client-max-body-size: $(fn-nginx-global-client-max-body-size "$APP")"
|
||||
@@ -71,6 +77,12 @@ cmd-nginx-report-single() {
|
||||
"--nginx-computed-hsts: $(fn-nginx-computed-hsts "$APP")"
|
||||
"--nginx-global-hsts: $(fn-nginx-global-hsts "$APP")"
|
||||
"--nginx-last-visited-at: $(fn-nginx-vhosts-last-visited-at "$APP")"
|
||||
"--nginx-keepalive-timeout: $(fn-nginx-keepalive-timeout "$APP")"
|
||||
"--nginx-computed-keepalive-timeout: $(fn-nginx-computed-keepalive-timeout "$APP")"
|
||||
"--nginx-global-keepalive-timeout: $(fn-nginx-global-keepalive-timeout "$APP")"
|
||||
"--nginx-lingering-timeout: $(fn-nginx-lingering-timeout "$APP")"
|
||||
"--nginx-computed-lingering-timeout: $(fn-nginx-computed-lingering-timeout "$APP")"
|
||||
"--nginx-global-lingering-timeout: $(fn-nginx-global-lingering-timeout "$APP")"
|
||||
"--nginx-nginx-conf-sigil-path: $(fn-nginx-nginx-conf-sigil-path "$APP")"
|
||||
"--nginx-computed-nginx-conf-sigil-path: $(fn-nginx-computed-nginx-conf-sigil-path "$APP")"
|
||||
"--nginx-global-nginx-conf-sigil-path: $(fn-nginx-global-nginx-conf-sigil-path "$APP")"
|
||||
@@ -86,9 +98,18 @@ cmd-nginx-report-single() {
|
||||
"--nginx-proxy-busy-buffers-size: $(fn-nginx-proxy-busy-buffers-size "$APP")"
|
||||
"--nginx-computed-proxy-busy-buffers-size: $(fn-nginx-computed-proxy-busy-buffers-size "$APP")"
|
||||
"--nginx-global-proxy-busy-buffers-size: $(fn-nginx-global-proxy-busy-buffers-size "$APP")"
|
||||
"--nginx-proxy-connect-timeout: $(fn-nginx-proxy-connect-timeout "$APP")"
|
||||
"--nginx-computed-proxy-connect-timeout: $(fn-nginx-computed-proxy-connect-timeout "$APP")"
|
||||
"--nginx-global-proxy-connect-timeout: $(fn-nginx-global-proxy-connect-timeout "$APP")"
|
||||
"--nginx-proxy-read-timeout: $(fn-nginx-proxy-read-timeout "$APP")"
|
||||
"--nginx-computed-proxy-read-timeout: $(fn-nginx-computed-proxy-read-timeout "$APP")"
|
||||
"--nginx-global-proxy-read-timeout: $(fn-nginx-global-proxy-read-timeout "$APP")"
|
||||
"--nginx-proxy-send-timeout: $(fn-nginx-proxy-send-timeout "$APP")"
|
||||
"--nginx-computed-proxy-send-timeout: $(fn-nginx-computed-proxy-send-timeout "$APP")"
|
||||
"--nginx-global-proxy-send-timeout: $(fn-nginx-global-proxy-send-timeout "$APP")"
|
||||
"--nginx-send-timeout: $(fn-nginx-send-timeout "$APP")"
|
||||
"--nginx-computed-send-timeout: $(fn-nginx-computed-send-timeout "$APP")"
|
||||
"--nginx-global-send-timeout: $(fn-nginx-global-send-timeout "$APP")"
|
||||
"--nginx-underscore-in-headers: $(fn-nginx-underscore-in-headers "$APP")"
|
||||
"--nginx-computed-underscore-in-headers: $(fn-nginx-computed-underscore-in-headers "$APP")"
|
||||
"--nginx-global-underscore-in-headers: $(fn-nginx-global-underscore-in-headers "$APP")"
|
||||
|
||||
@@ -310,8 +310,15 @@ nginx_build_config() {
|
||||
local NGINX_ACCESS_LOG_FORMAT="$(fn-nginx-computed-access-log-format "$APP")"
|
||||
local NGINX_ACCESS_LOG_PATH="$(fn-nginx-computed-access-log-path "$APP")"
|
||||
local NGINX_ERROR_LOG_PATH="$(fn-nginx-computed-error-log-path "$APP")"
|
||||
local CLIENT_BODY_TIMEOUT="$(fn-nginx-computed-client-body-timeout "$APP")"
|
||||
local CLIENT_HEADER_TIMEOUT="$(fn-nginx-computed-client-header-timeout "$APP")"
|
||||
local CLIENT_MAX_BODY_SIZE="$(fn-nginx-computed-client-max-body-size "$APP")"
|
||||
local KEEPALIVE_TIMEOUT="$(fn-nginx-computed-keepalive-timeout "$APP")"
|
||||
local LINGERING_TIMEOUT="$(fn-nginx-computed-lingering-timeout "$APP")"
|
||||
local PROXY_CONNECT_TIMEOUT="$(fn-nginx-computed-proxy-connect-timeout "$APP")"
|
||||
local PROXY_READ_TIMEOUT="$(fn-nginx-computed-proxy-read-timeout "$APP")"
|
||||
local PROXY_SEND_TIMEOUT="$(fn-nginx-computed-proxy-send-timeout "$APP")"
|
||||
local SEND_TIMEOUT="$(fn-nginx-computed-send-timeout "$APP")"
|
||||
local PROXY_BUFFER_SIZE="$(fn-nginx-computed-proxy-buffer-size "$APP")"
|
||||
local PROXY_BUFFERING="$(fn-nginx-computed-proxy-buffering "$APP")"
|
||||
local PROXY_BUFFERS="$(fn-nginx-computed-proxy-buffers "$APP")"
|
||||
@@ -368,8 +375,15 @@ nginx_build_config() {
|
||||
GRPC_SUPPORTED="$GRPC_SUPPORTED"
|
||||
DOKKU_APP_LISTEN_PORT="$DOKKU_APP_LISTEN_PORT" DOKKU_APP_LISTEN_IP="$DOKKU_APP_LISTEN_IP"
|
||||
APP_SSL_PATH="$APP_SSL_PATH" SSL_INUSE="$SSL_INUSE" SSL_SERVER_NAME="$SSL_SERVER_NAME"
|
||||
CLIENT_BODY_TIMEOUT="$CLIENT_BODY_TIMEOUT"
|
||||
CLIENT_HEADER_TIMEOUT="$CLIENT_HEADER_TIMEOUT"
|
||||
CLIENT_MAX_BODY_SIZE="$CLIENT_MAX_BODY_SIZE"
|
||||
KEEPALIVE_TIMEOUT="$KEEPALIVE_TIMEOUT"
|
||||
LINGERING_TIMEOUT="$LINGERING_TIMEOUT"
|
||||
PROXY_CONNECT_TIMEOUT="$PROXY_CONNECT_TIMEOUT"
|
||||
PROXY_READ_TIMEOUT="$PROXY_READ_TIMEOUT"
|
||||
PROXY_SEND_TIMEOUT="$PROXY_SEND_TIMEOUT"
|
||||
SEND_TIMEOUT="$SEND_TIMEOUT"
|
||||
PROXY_BUFFER_SIZE="$PROXY_BUFFER_SIZE"
|
||||
PROXY_BUFFERING="$PROXY_BUFFERING"
|
||||
PROXY_BUFFERS="$PROXY_BUFFERS"
|
||||
|
||||
@@ -88,6 +88,48 @@ fn-nginx-global-bind-address-ipv6() {
|
||||
fn-get-property --app "$APP" --global "bind-address-ipv6"
|
||||
}
|
||||
|
||||
fn-nginx-client-body-timeout() {
|
||||
declare desc="get the configured client body timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "client-body-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-client-body-timeout() {
|
||||
declare desc="get the computed client body timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "client-body-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-client-body-timeout() {
|
||||
declare desc="get the global client body timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "client-body-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-client-header-timeout() {
|
||||
declare desc="get the configured client header timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "client-header-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-client-header-timeout() {
|
||||
declare desc="get the computed client header timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "client-header-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-client-header-timeout() {
|
||||
declare desc="get the global client header timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "client-header-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-client-max-body-size() {
|
||||
declare desc="get the configured client max body size"
|
||||
declare APP="$1"
|
||||
@@ -228,6 +270,48 @@ fn-nginx-log-root() {
|
||||
echo "$NGINX_LOG_ROOT"
|
||||
}
|
||||
|
||||
fn-nginx-keepalive-timeout() {
|
||||
declare desc="get the configured keepalive timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "keepalive-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-keepalive-timeout() {
|
||||
declare desc="get the computed keepalive timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "keepalive-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-keepalive-timeout() {
|
||||
declare desc="get the global keepalive timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "keepalive-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-lingering-timeout() {
|
||||
declare desc="get the configured lingering timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "lingering-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-lingering-timeout() {
|
||||
declare desc="get the computed lingering timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "lingering-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-lingering-timeout() {
|
||||
declare desc="get the global lingering timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "lingering-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-nginx-conf-sigil-path() {
|
||||
declare APP="$1"
|
||||
fn-get-property --app "$APP" "nginx-conf-sigil-path"
|
||||
@@ -326,6 +410,27 @@ fn-nginx-global-proxy-busy-buffers-size() {
|
||||
fn-get-property --app "$APP" --global "proxy-busy-buffers-size"
|
||||
}
|
||||
|
||||
fn-nginx-proxy-connect-timeout() {
|
||||
declare desc="get the configured proxy connect timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "proxy-connect-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-proxy-connect-timeout() {
|
||||
declare desc="get the computed proxy connect timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "proxy-connect-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-proxy-connect-timeout() {
|
||||
declare desc="get the global proxy connect timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "proxy-connect-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-proxy-read-timeout() {
|
||||
declare desc="get the configured proxy read timeout"
|
||||
declare APP="$1"
|
||||
@@ -347,6 +452,48 @@ fn-nginx-global-proxy-read-timeout() {
|
||||
fn-get-property --app "$APP" --global "proxy-read-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-proxy-send-timeout() {
|
||||
declare desc="get the configured proxy send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "proxy-send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-proxy-send-timeout() {
|
||||
declare desc="get the computed proxy send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "proxy-send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-proxy-send-timeout() {
|
||||
declare desc="get the global proxy send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "proxy-send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-send-timeout() {
|
||||
declare desc="get the configured send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" "send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-computed-send-timeout() {
|
||||
declare desc="get the computed send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --computed "send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-global-send-timeout() {
|
||||
declare desc="get the global send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-get-property --app "$APP" --global "send-timeout"
|
||||
}
|
||||
|
||||
fn-nginx-underscore-in-headers() {
|
||||
declare desc="get the configured underscore in headers value"
|
||||
declare APP="$1"
|
||||
|
||||
@@ -76,6 +76,40 @@ func GlobalBindAddressIPv6() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "bind-address-ipv6", "::")
|
||||
}
|
||||
|
||||
func AppClientBodyTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "client-body-timeout")
|
||||
}
|
||||
|
||||
func ComputedClientBodyTimeout(appName string) string {
|
||||
appValue := AppClientBodyTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalClientBodyTimeout()
|
||||
}
|
||||
|
||||
func GlobalClientBodyTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "client-body-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppClientHeaderTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "client-header-timeout")
|
||||
}
|
||||
|
||||
func ComputedClientHeaderTimeout(appName string) string {
|
||||
appValue := AppClientHeaderTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalClientHeaderTimeout()
|
||||
}
|
||||
|
||||
func GlobalClientHeaderTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "client-header-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppClientMaxBodySize(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "client-max-body-size")
|
||||
}
|
||||
@@ -200,6 +234,40 @@ func AppNginxConfSigilPath(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "nginx-conf-sigil-path")
|
||||
}
|
||||
|
||||
func AppKeepaliveTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "keepalive-timeout")
|
||||
}
|
||||
|
||||
func ComputedKeepaliveTimeout(appName string) string {
|
||||
appValue := AppKeepaliveTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalKeepaliveTimeout()
|
||||
}
|
||||
|
||||
func GlobalKeepaliveTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "keepalive-timeout", "75s")
|
||||
}
|
||||
|
||||
func AppLingeringTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "lingering-timeout")
|
||||
}
|
||||
|
||||
func ComputedLingeringTimeout(appName string) string {
|
||||
appValue := AppLingeringTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalLingeringTimeout()
|
||||
}
|
||||
|
||||
func GlobalLingeringTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "lingering-timeout", "5s")
|
||||
}
|
||||
|
||||
func ComputedNginxConfSigilPath(appName string) string {
|
||||
appValue := AppNginxConfSigilPath(appName)
|
||||
if appValue != "" {
|
||||
@@ -281,6 +349,23 @@ func GlobalProxyBusyBuffersSize() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "proxy-busy-buffers-size", fmt.Sprintf("%dk", (os.Getpagesize()/1024)*2))
|
||||
}
|
||||
|
||||
func AppProxyConnectTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "proxy-connect-timeout")
|
||||
}
|
||||
|
||||
func ComputedProxyConnectTimeout(appName string) string {
|
||||
appValue := AppProxyConnectTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalProxyConnectTimeout()
|
||||
}
|
||||
|
||||
func GlobalProxyConnectTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "proxy-connect-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppProxyReadTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "proxy-read-timeout")
|
||||
}
|
||||
@@ -298,6 +383,40 @@ func GlobalProxyReadTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "proxy-read-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppProxySendTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "proxy-send-timeout")
|
||||
}
|
||||
|
||||
func ComputedProxySendTimeout(appName string) string {
|
||||
appValue := AppProxySendTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalProxySendTimeout()
|
||||
}
|
||||
|
||||
func GlobalProxySendTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "proxy-send-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppSendTimeout(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "send-timeout")
|
||||
}
|
||||
|
||||
func ComputedSendTimeout(appName string) string {
|
||||
appValue := AppSendTimeout(appName)
|
||||
if appValue != "" {
|
||||
return appValue
|
||||
}
|
||||
|
||||
return GlobalSendTimeout()
|
||||
}
|
||||
|
||||
func GlobalSendTimeout() string {
|
||||
return common.PropertyGetDefault("nginx", "--global", "send-timeout", "60s")
|
||||
}
|
||||
|
||||
func AppUnderscoreInHeaders(appName string) string {
|
||||
return common.PropertyGet("nginx", appName, "underscore-in-headers")
|
||||
}
|
||||
|
||||
@@ -45,6 +45,10 @@ func appValue(appName string, property string) string {
|
||||
value = nginx_vhosts.AppBindAddressIPv6(appName)
|
||||
case "client-max-body-size":
|
||||
value = nginx_vhosts.AppClientMaxBodySize(appName)
|
||||
case "client-body-timeout":
|
||||
value = nginx_vhosts.AppClientBodyTimeout(appName)
|
||||
case "client-header-timeout":
|
||||
value = nginx_vhosts.AppClientHeaderTimeout(appName)
|
||||
case "disable-custom-config":
|
||||
value = nginx_vhosts.AppDisableCustomConfig(appName)
|
||||
case "error-log-path":
|
||||
@@ -57,6 +61,10 @@ func appValue(appName string, property string) string {
|
||||
value = nginx_vhosts.AppHSTSPreload(appName)
|
||||
case "hsts":
|
||||
value = nginx_vhosts.AppHSTS(appName)
|
||||
case "keepalive-timeout":
|
||||
value = nginx_vhosts.AppKeepaliveTimeout(appName)
|
||||
case "lingering-timeout":
|
||||
value = nginx_vhosts.AppLingeringTimeout(appName)
|
||||
case "nginx-conf-sigil-path":
|
||||
value = nginx_vhosts.AppNginxConfSigilPath(appName)
|
||||
case "proxy-buffer-size":
|
||||
@@ -67,8 +75,14 @@ func appValue(appName string, property string) string {
|
||||
value = nginx_vhosts.AppProxyBuffers(appName)
|
||||
case "proxy-busy-buffers-size":
|
||||
value = nginx_vhosts.AppProxyBusyBuffersSize(appName)
|
||||
case "proxy-connect-timeout":
|
||||
value = nginx_vhosts.AppProxyConnectTimeout(appName)
|
||||
case "proxy-read-timeout":
|
||||
value = nginx_vhosts.AppProxyReadTimeout(appName)
|
||||
case "proxy-send-timeout":
|
||||
value = nginx_vhosts.AppProxySendTimeout(appName)
|
||||
case "send-timeout":
|
||||
value = nginx_vhosts.AppSendTimeout(appName)
|
||||
case "underscore-in-headers":
|
||||
value = nginx_vhosts.AppUnderscoreInHeaders(appName)
|
||||
case "x-forwarded-for-value":
|
||||
@@ -95,6 +109,10 @@ func computedValue(appName string, property string) string {
|
||||
value = nginx_vhosts.ComputedBindAddressIPv4(appName)
|
||||
case "bind-address-ipv6":
|
||||
value = nginx_vhosts.ComputedBindAddressIPv6(appName)
|
||||
case "client-body-timeout":
|
||||
value = nginx_vhosts.ComputedClientBodyTimeout(appName)
|
||||
case "client-header-timeout":
|
||||
value = nginx_vhosts.ComputedClientHeaderTimeout(appName)
|
||||
case "client-max-body-size":
|
||||
value = nginx_vhosts.ComputedClientMaxBodySize(appName)
|
||||
case "disable-custom-config":
|
||||
@@ -109,6 +127,10 @@ func computedValue(appName string, property string) string {
|
||||
value = nginx_vhosts.ComputedHSTSPreload(appName)
|
||||
case "hsts":
|
||||
value = nginx_vhosts.ComputedHSTS(appName)
|
||||
case "keepalive-timeout":
|
||||
value = nginx_vhosts.ComputedKeepaliveTimeout(appName)
|
||||
case "lingering-timeout":
|
||||
value = nginx_vhosts.ComputedLingeringTimeout(appName)
|
||||
case "nginx-conf-sigil-path":
|
||||
value = nginx_vhosts.ComputedNginxConfSigilPath(appName)
|
||||
case "proxy-buffer-size":
|
||||
@@ -119,8 +141,14 @@ func computedValue(appName string, property string) string {
|
||||
value = nginx_vhosts.ComputedProxyBuffers(appName)
|
||||
case "proxy-busy-buffers-size":
|
||||
value = nginx_vhosts.ComputedProxyBusyBuffersSize(appName)
|
||||
case "proxy-connect-timeout":
|
||||
value = nginx_vhosts.ComputedProxyConnectTimeout(appName)
|
||||
case "proxy-read-timeout":
|
||||
value = nginx_vhosts.ComputedProxyReadTimeout(appName)
|
||||
case "proxy-send-timeout":
|
||||
value = nginx_vhosts.ComputedProxySendTimeout(appName)
|
||||
case "send-timeout":
|
||||
value = nginx_vhosts.ComputedSendTimeout(appName)
|
||||
case "underscore-in-headers":
|
||||
value = nginx_vhosts.ComputedUnderscoreInHeaders(appName)
|
||||
case "x-forwarded-for-value":
|
||||
@@ -147,6 +175,10 @@ func globalValue(appName string, property string) string {
|
||||
value = nginx_vhosts.GlobalBindAddressIPv4()
|
||||
case "bind-address-ipv6":
|
||||
value = nginx_vhosts.GlobalBindAddressIPv6()
|
||||
case "client-body-timeout":
|
||||
value = nginx_vhosts.ComputedClientBodyTimeout(appName)
|
||||
case "client-header-timeout":
|
||||
value = nginx_vhosts.ComputedClientHeaderTimeout(appName)
|
||||
case "client-max-body-size":
|
||||
value = nginx_vhosts.GlobalClientMaxBodySize()
|
||||
case "disable-custom-config":
|
||||
@@ -161,6 +193,10 @@ func globalValue(appName string, property string) string {
|
||||
value = nginx_vhosts.GlobalHSTSPreload()
|
||||
case "hsts":
|
||||
value = nginx_vhosts.GlobalHSTS()
|
||||
case "keepalive-timeout":
|
||||
value = nginx_vhosts.ComputedKeepaliveTimeout(appName)
|
||||
case "lingering-timeout":
|
||||
value = nginx_vhosts.ComputedLingeringTimeout(appName)
|
||||
case "nginx-conf-sigil-path":
|
||||
value = nginx_vhosts.GlobalNginxConfSigilPath()
|
||||
case "proxy-buffer-size":
|
||||
@@ -171,8 +207,14 @@ func globalValue(appName string, property string) string {
|
||||
value = nginx_vhosts.GlobalProxyBuffers()
|
||||
case "proxy-busy-buffers-size":
|
||||
value = nginx_vhosts.GlobalProxyBusyBuffersSize()
|
||||
case "proxy-connect-timeout":
|
||||
value = nginx_vhosts.GlobalProxyConnectTimeout()
|
||||
case "proxy-read-timeout":
|
||||
value = nginx_vhosts.GlobalProxyReadTimeout()
|
||||
case "proxy-send-timeout":
|
||||
value = nginx_vhosts.GlobalProxySendTimeout()
|
||||
case "send-timeout":
|
||||
value = nginx_vhosts.GlobalSendTimeout()
|
||||
case "underscore-in-headers":
|
||||
value = nginx_vhosts.GlobalUnderscoreInHeaders()
|
||||
case "x-forwarded-for-value":
|
||||
|
||||
@@ -9,13 +9,13 @@ cmd-nginx-set() {
|
||||
declare cmd="nginx:set"
|
||||
[[ "$1" == "$cmd" ]] && shift 1
|
||||
declare APP="$1" KEY="$2" VALUE="$3"
|
||||
local VALID_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "nginx-conf-sigil-path" "proxy-read-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
local GLOBAL_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts-include-subdomains" "hsts-max-age" "hsts-preload" "hsts" "nginx-conf-sigil-path" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-read-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
local VALID_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-body-timeout" "client-header-timeout" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "keepalive-timeout" "lingering-timeout" "nginx-conf-sigil-path" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-connect-timeout" "proxy-read-timeout" "proxy-send-timeout" "send-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
local GLOBAL_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-body-timeout" "client-header-timeout" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts-include-subdomains" "hsts-max-age" "hsts-preload" "hsts" "keepalive-timeout" "lingering-timeout" "nginx-conf-sigil-path" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-connect-timeout" "proxy-read-timeout" "proxy-send-timeout" "send-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
|
||||
[[ -z "$KEY" ]] && dokku_log_fail "No key specified"
|
||||
|
||||
if ! fn-in-array "$KEY" "${VALID_KEYS[@]}"; then
|
||||
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, bind-address-ipv4, bind-address-ipv6, client-max-body-size, disable-custom-config, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, nginx-conf-sigil-path, proxy-read-timeout, proxy-buffer-size, proxy-buffering, proxy-buffers, proxy-busy-buffers-size, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
|
||||
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, bind-address-ipv4, bind-address-ipv6, client-body-timeout, client-header-timeout, client-max-body-size, disable-custom-config, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, keepalive-timeout, lingering-timeout, nginx-conf-sigil-path, proxy-buffer-size, proxy-buffering, proxy-buffers, proxy-busy-buffers-size, proxy-connect-timeout, proxy-read-timeout, proxy-send-timeout, send-timeout, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
|
||||
fi
|
||||
|
||||
if ! fn-in-array "$KEY" "${GLOBAL_KEYS[@]}"; then
|
||||
|
||||
@@ -12,6 +12,13 @@ server {
|
||||
access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }};
|
||||
error_log {{ $.NGINX_ERROR_LOG_PATH }};
|
||||
underscores_in_headers {{ $.NGINX_UNDERSCORE_IN_HEADERS }};
|
||||
|
||||
client_body_timeout {{ $.CLIENT_BODY_TIMEOUT }};
|
||||
client_header_timeout {{ $.CLIENT_HEADER_TIMEOUT }};
|
||||
keepalive_timeout {{ $.KEEPALIVE_TIMEOUT }};
|
||||
lingering_timeout {{ $.LINGERING_TIMEOUT }};
|
||||
send_timeout {{ $.SEND_TIMEOUT }};
|
||||
|
||||
{{ if (and (eq $listen_port "80") ($.SSL_INUSE)) }}
|
||||
include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
|
||||
location / {
|
||||
@@ -29,7 +36,9 @@ server {
|
||||
|
||||
proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
|
||||
proxy_http_version 1.1;
|
||||
proxy_connect_timeout {{ $.PROXY_CONNECT_TIMEOUT }};
|
||||
proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }};
|
||||
proxy_send_timeout {{ $.PROXY_SEND_TIMEOUT }};
|
||||
proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }};
|
||||
proxy_buffering {{ $.PROXY_BUFFERING }};
|
||||
proxy_buffers {{ $.PROXY_BUFFERS }};
|
||||
@@ -81,7 +90,11 @@ server {
|
||||
ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }};
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
keepalive_timeout 70;
|
||||
client_body_timeout {{ $.CLIENT_BODY_TIMEOUT }};
|
||||
client_header_timeout {{ $.CLIENT_HEADER_TIMEOUT }};
|
||||
keepalive_timeout {{ $.KEEPALIVE_TIMEOUT }};
|
||||
lingering_timeout {{ $.LINGERING_TIMEOUT }};
|
||||
send_timeout {{ $.SEND_TIMEOUT }};
|
||||
|
||||
location / {
|
||||
|
||||
@@ -95,7 +108,9 @@ server {
|
||||
proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
|
||||
{{ if eq $.HTTP2_PUSH_SUPPORTED "true" }}http2_push_preload on; {{ end }}
|
||||
proxy_http_version 1.1;
|
||||
proxy_connect_timeout {{ $.PROXY_CONNECT_TIMEOUT }};
|
||||
proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }};
|
||||
proxy_send_timeout {{ $.PROXY_SEND_TIMEOUT }};
|
||||
proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }};
|
||||
proxy_buffering {{ $.PROXY_BUFFERING }};
|
||||
proxy_buffers {{ $.PROXY_BUFFERS }};
|
||||
|
||||
@@ -40,6 +40,8 @@ cmd-openresty-report-single() {
|
||||
"--openresty-allowed-letsencrypt-domains-func-base64: $(fn-openresty-allowed-letsencrypt-domains-func-base64)"
|
||||
"--openresty-bind-address-ipv4: $(fn-openresty-bind-address-ipv4 "$APP")"
|
||||
"--openresty-bind-address-ipv6: $(fn-openresty-bind-address-ipv6 "$APP")"
|
||||
"--openresty-client-body-timeout: $(fn-openresty-client-body-timeout "$APP")"
|
||||
"--openresty-client-header-timeout: $(fn-openresty-client-header-timeout "$APP")"
|
||||
"--openresty-client-max-body-size: $(fn-openresty-client-max-body-size "$APP")"
|
||||
"--openresty-error-log-path: $(fn-openresty-error-log-path "$APP")"
|
||||
"--openresty-global-hsts: $(fn-plugin-property-get-default "openresty" "--global" "hsts" "true")"
|
||||
@@ -49,13 +51,18 @@ cmd-openresty-report-single() {
|
||||
"--openresty-hsts-max-age: $(fn-openresty-hsts-max-age "$APP")"
|
||||
"--openresty-hsts-preload: $(fn-openresty-hsts-preload "$APP")"
|
||||
"--openresty-image: $(fn-openresty-image)"
|
||||
"--openresty-keepalive-timeout: $(fn-openresty-keepalive-timeout "$APP")"
|
||||
"--openresty-letsencrypt-email: $(fn-openresty-letsencrypt-email)"
|
||||
"--openresty-letsencrypt-server: $(fn-openresty-letsencrypt-server)"
|
||||
"--openresty-lingering-timeout: $(fn-openresty-lingering-timeout "$APP")"
|
||||
"--openresty-proxy-buffer-size: $(fn-openresty-proxy-buffer-size "$APP")"
|
||||
"--openresty-proxy-buffering: $(fn-openresty-proxy-buffering "$APP")"
|
||||
"--openresty-proxy-buffers: $(fn-openresty-proxy-buffers "$APP")"
|
||||
"--openresty-proxy-busy-buffers-size: $(fn-openresty-proxy-busy-buffers-size "$APP")"
|
||||
"--openresty-proxy-connect-timeout: $(fn-openresty-proxy-connect-timeout "$APP")"
|
||||
"--openresty-proxy-read-timeout: $(fn-openresty-proxy-read-timeout "$APP")"
|
||||
"--openresty-proxy-send-timeout: $(fn-openresty-proxy-send-timeout "$APP")"
|
||||
"--openresty-send-timeout: $(fn-openresty-send-timeout "$APP")"
|
||||
"--openresty-underscore-in-headers: $(fn-openresty-underscore-in-headers "$APP")"
|
||||
"--openresty-x-forwarded-for-value: $(fn-openresty-x-forwarded-for-value "$APP")"
|
||||
"--openresty-x-forwarded-port-value: $(fn-openresty-x-forwarded-port-value "$APP")"
|
||||
|
||||
@@ -124,6 +124,10 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv4=$value'"
|
||||
value="$(fn-openresty-bind-address-ipv6 "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv6=$value'"
|
||||
value="$(fn-openresty-client-body-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.client-body-timeout=$value'"
|
||||
value="$(fn-openresty-client-header-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.client-header-timeout=$value'"
|
||||
value="$(fn-openresty-client-max-body-size "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.client-max-body-size=$value'"
|
||||
value="$(fn-openresty-error-log-path "$APP")"
|
||||
@@ -142,6 +146,10 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.domains=$value'"
|
||||
value="$(plugn trigger network-get-property "$APP" initial-network)"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.initial-network=$value'"
|
||||
value="$(fn-openresty-keepalive-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.keepalive-timeout=$value'"
|
||||
value="$(fn-openresty-lingering-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.lingering-timeout=$value'"
|
||||
value="$(echo "$APP_PORT_MAP" | xargs)"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.port-mapping=$value'"
|
||||
value="$(fn-openresty-proxy-buffer-size "$APP")"
|
||||
@@ -160,6 +168,8 @@ trigger-openresty-vhosts-docker-args-process-deploy() {
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-send-timeout=$value'"
|
||||
value="$(fn-openresty-send-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
|
||||
value="$(fn-openresty-send-timeout "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
|
||||
value="$(fn-openresty-underscore-in-headers "$APP")"
|
||||
[[ -n "$value" ]] && output="$output '--label=openresty.underscore-in-headers=$value'"
|
||||
value="$(fn-openresty-x-forwarded-for-value "$APP")"
|
||||
|
||||
@@ -46,6 +46,20 @@ fn-openresty-bind-address-ipv6() {
|
||||
fn-plugin-property-get-default "openresty" "$APP" "bind-address-ipv6" "::"
|
||||
}
|
||||
|
||||
fn-openresty-client-body-timeout() {
|
||||
declare desc="get the configured client body timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-plugin-property-get-default "openresty" "$APP" "client-body-timeout" "60s"
|
||||
}
|
||||
|
||||
fn-openresty-client-header-timeout() {
|
||||
declare desc="get the configured client header timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-plugin-property-get-default "openresty" "$APP" "client-body-timeout" "60s"
|
||||
}
|
||||
|
||||
fn-openresty-client-max-body-size() {
|
||||
declare desc="get the configured client max body size"
|
||||
declare APP="$1"
|
||||
@@ -121,6 +135,13 @@ fn-openresty-image() {
|
||||
fn-plugin-property-get-default "openresty" "--global" "image" "$(grep "FROM" "$PLUGIN_AVAILABLE_PATH/openresty-vhosts/Dockerfile" | awk '{print $2}')"
|
||||
}
|
||||
|
||||
fn-openresty-keepalive-timeout() {
|
||||
declare desc="get the configured keepalive timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-plugin-property-get-default "openresty" "$APP" "keepalive-timeout" "75s"
|
||||
}
|
||||
|
||||
fn-openresty-letsencrypt-email() {
|
||||
fn-plugin-property-get-default "openresty" "--global" "letsencrypt-email" ""
|
||||
}
|
||||
@@ -156,6 +177,13 @@ fn-openresty-logs-usage() {
|
||||
echo " -t, --tail # continually stream logs"
|
||||
}
|
||||
|
||||
fn-openresty-lingering-timeout() {
|
||||
declare desc="get the configured lingering timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-plugin-property-get-default "openresty" "$APP" "lingering-timeout" "5s"
|
||||
}
|
||||
|
||||
fn-openresty-proxy-buffer-size() {
|
||||
declare desc="get the configured proxy buffer size"
|
||||
declare APP="$1"
|
||||
@@ -206,7 +234,7 @@ fn-openresty-proxy-send-timeout() {
|
||||
}
|
||||
|
||||
fn-openresty-send-timeout() {
|
||||
declare desc="get the configured proxy send timeout"
|
||||
declare desc="get the configured send timeout"
|
||||
declare APP="$1"
|
||||
|
||||
fn-plugin-property-get-default "openresty" "$APP" "send-timeout" "60s"
|
||||
|
||||
@@ -9,13 +9,13 @@ cmd-openresty-set() {
|
||||
declare cmd="openresty:set"
|
||||
[[ "$1" == "$cmd" ]] && shift 1
|
||||
declare APP="$1" KEY="$2" VALUE="$3"
|
||||
local VALID_KEYS=("access-log-format" "access-log-path" "allowed-letsencrypt-domains-func-base64" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "image" "log-level" "letsencrypt-email" "letsencrypt-server" "proxy-read-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
local VALID_KEYS=("access-log-format" "access-log-path" "allowed-letsencrypt-domains-func-base64" "bind-address-ipv4" "bind-address-ipv6" "client-body-timeout" "client-header-timeout" "client-max-body-size" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "image" "keepalive-timeout" "log-level" "letsencrypt-email" "letsencrypt-server" "lingering-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-connect-timeout" "proxy-read-timeout" "send-timeout" "proxy-send-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
|
||||
local GLOBAL_KEYS=("allowed-letsencrypt-domains-func-base64" "image" "log-level" "letsencrypt-email" "letsencrypt-server")
|
||||
|
||||
[[ -z "$KEY" ]] && dokku_log_fail "No key specified"
|
||||
|
||||
if ! fn-in-array "$KEY" "${VALID_KEYS[@]}"; then
|
||||
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, allowed-letsencrypt-domains-func-base64, bind-address-ipv4, bind-address-ipv6, client-max-body-size, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, image, log-level, letsencrypt-email, letsencrypt-server, proxy-read-timeout, proxy-buffer-size, proxy-buffering, proxy-buffers, proxy-busy-buffers-size, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
|
||||
dokku_log_fail "Invalid key specified, valid keys include: access-log-format, access-log-path, allowed-letsencrypt-domains-func-base64, bind-address-ipv4, bind-address-ipv6, client-body-timeout, client-header-timeout, client-max-body-size, error-log-path, hsts, hsts-include-subdomains, hsts-preload, hsts-max-age, image, keepalive-timeout, log-level, letsencrypt-email, letsencrypt-server, lingering-timeout, proxy-connect-timeout, proxy-connect-timeout, proxy-read-timeout, proxy-send-timeout, send-timeout, underscore-in-headers, x-forwarded-for-value, x-forwarded-port-value, x-forwarded-proto-value, x-forwarded-ssl"
|
||||
fi
|
||||
|
||||
if ! fn-in-array "$KEY" "${GLOBAL_KEYS[@]}"; then
|
||||
|
||||
@@ -806,6 +806,24 @@ func getIngressAnnotations(appName string, processType string) (map[string]strin
|
||||
"bind-address-ipv6": {
|
||||
getter: nginxvhosts.ComputedBindAddressIPv6,
|
||||
},
|
||||
"client-body-timeout": {
|
||||
getter: nginxvhosts.ComputedClientBodyTimeout,
|
||||
serverSnippet: func(value string) string {
|
||||
if value == "" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("client_body_timeout %s;", value)
|
||||
},
|
||||
},
|
||||
"client-header-timeout": {
|
||||
getter: nginxvhosts.ComputedClientHeaderTimeout,
|
||||
serverSnippet: func(value string) string {
|
||||
if value == "" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("client_header_timeout %s;", value)
|
||||
},
|
||||
},
|
||||
"client-max-body-size": {
|
||||
annotation: "nginx.ingress.kubernetes.io/proxy-body-size",
|
||||
getter: nginxvhosts.ComputedClientMaxBodySize,
|
||||
@@ -835,6 +853,24 @@ func getIngressAnnotations(appName string, processType string) (map[string]strin
|
||||
"hsts": {
|
||||
getter: nginxvhosts.ComputedHSTS,
|
||||
},
|
||||
"keepalive-timeout": {
|
||||
getter: nginxvhosts.ComputedKeepaliveTimeout,
|
||||
serverSnippet: func(value string) string {
|
||||
if value == "" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("keepalive_timeout %s;", value)
|
||||
},
|
||||
},
|
||||
"lingering-timeout": {
|
||||
getter: nginxvhosts.ComputedLingeringTimeout,
|
||||
serverSnippet: func(value string) string {
|
||||
if value == "" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("lingering_timeout %s;", value)
|
||||
},
|
||||
},
|
||||
"nginx-conf-sigil-path": {
|
||||
getter: nginxvhosts.ComputedNginxConfSigilPath,
|
||||
},
|
||||
@@ -859,10 +895,27 @@ func getIngressAnnotations(appName string, processType string) (map[string]strin
|
||||
return fmt.Sprintf("proxy_busy_buffers_size %s;", value)
|
||||
},
|
||||
},
|
||||
"proxy-connect-timeout": {
|
||||
annotation: "nginx.ingress.kubernetes.io/proxy-connect-timeout",
|
||||
getter: nginxvhosts.ComputedProxyConnectTimeout,
|
||||
},
|
||||
"proxy-read-timeout": {
|
||||
annotation: "nginx.ingress.kubernetes.io/proxy-read-timeout",
|
||||
getter: nginxvhosts.ComputedProxyReadTimeout,
|
||||
},
|
||||
"proxy-send-timeout": {
|
||||
annotation: "nginx.ingress.kubernetes.io/proxy-send-timeout",
|
||||
getter: nginxvhosts.ComputedProxySendTimeout,
|
||||
},
|
||||
"send-timeout": {
|
||||
getter: nginxvhosts.ComputedSendTimeout,
|
||||
serverSnippet: func(value string) string {
|
||||
if value == "" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("send_timeout %s;", value)
|
||||
},
|
||||
},
|
||||
"underscore-in-headers": {
|
||||
getter: nginxvhosts.ComputedUnderscoreInHeaders,
|
||||
serverSnippet: func(value string) string {
|
||||
|
||||
Reference in New Issue
Block a user