Files
dokku/plugins/nginx-vhosts/nginx_vhosts.go
Jose Diaz-Gonzalez 06de81b61b refactor: allow custom nginx command to be set as an nginx property
This avoids adding a new environment variable in favor of a script that can be called both globally as well as on a per-app basis.
2025-06-30 03:29:43 -04:00

521 lines
13 KiB
Go

package nginxvhosts
import (
"fmt"
"os"
"github.com/dokku/dokku/plugins/common"
)
func AppAccessLogFormat(appName string) string {
return common.PropertyGet("nginx", appName, "access-log-format")
}
func ComputedAccessLogFormat(appName string) string {
appValue := AppAccessLogFormat(appName)
if appValue != "" {
return appValue
}
return GlobalAccessLogFormat()
}
func GlobalAccessLogFormat() string {
return common.PropertyGet("nginx", "--global", "access-log-format")
}
func AppAccessLogPath(appName string) string {
return common.PropertyGet("nginx", appName, "access-log-path")
}
func ComputedAccessLogPath(appName string) string {
appValue := AppAccessLogPath(appName)
if appValue != "" {
return appValue
}
return GlobalAccessLogPath(appName)
}
func GlobalAccessLogPath(appName string) string {
defaultLogPath := fmt.Sprintf("%s/%s-access.log", getLogRoot(), appName)
return common.PropertyGetDefault("nginx", "--global", "access-log-path", defaultLogPath)
}
func AppBindAddressIPv4(appName string) string {
return common.PropertyGet("nginx", appName, "bind-address-ipv4")
}
func ComputedBindAddressIPv4(appName string) string {
appValue := AppBindAddressIPv4(appName)
if appValue != "" {
return appValue
}
return GlobalBindAddressIPv4()
}
func GlobalBindAddressIPv4() string {
return common.PropertyGet("nginx", "--global", "bind-address-ipv4")
}
func AppBindAddressIPv6(appName string) string {
return common.PropertyGet("nginx", appName, "bind-address-ipv6")
}
func ComputedBindAddressIPv6(appName string) string {
appValue := AppBindAddressIPv6(appName)
if appValue != "" {
return appValue
}
return GlobalBindAddressIPv6()
}
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")
}
func ComputedClientMaxBodySize(appName string) string {
appValue := AppClientMaxBodySize(appName)
if appValue != "" {
return appValue
}
return GlobalClientMaxBodySize()
}
func GlobalClientMaxBodySize() string {
return common.PropertyGetDefault("nginx", "--global", "client-max-body-size", "1m")
}
func AppDisableCustomConfig(appName string) string {
return common.PropertyGet("nginx", appName, "disable-custom-config")
}
func ComputedDisableCustomConfig(appName string) string {
appValue := AppDisableCustomConfig(appName)
if appValue != "" {
return appValue
}
return GlobalDisableCustomConfig()
}
func GlobalDisableCustomConfig() string {
return common.PropertyGetDefault("nginx", "--global", "disable-custom-config", "false")
}
func AppErrorLogPath(appName string) string {
return common.PropertyGet("nginx", appName, "error-log-path")
}
func ComputedErrorLogPath(appName string) string {
appValue := AppErrorLogPath(appName)
if appValue != "" {
return appValue
}
return GlobalErrorLogPath(appName)
}
func GlobalErrorLogPath(appName string) string {
defaultLogPath := fmt.Sprintf("%s/%s-error.log", getLogRoot(), appName)
return common.PropertyGetDefault("nginx", "--global", "error-log-path", defaultLogPath)
}
func AppHSTSIncludeSubdomains(appName string) string {
return common.PropertyGet("nginx", appName, "hsts-include-subdomains")
}
func ComputedHSTSIncludeSubdomains(appName string) string {
appValue := AppHSTSIncludeSubdomains(appName)
if appValue != "" {
return appValue
}
return GlobalHSTSIncludeSubdomains()
}
func GlobalHSTSIncludeSubdomains() string {
return common.PropertyGetDefault("nginx", "--global", "hsts-include-subdomains", "true")
}
func AppHSTSMaxAge(appName string) string {
return common.PropertyGet("nginx", appName, "hsts-max-age")
}
func ComputedHSTSMaxAge(appName string) string {
appValue := AppHSTSMaxAge(appName)
if appValue != "" {
return appValue
}
return GlobalHSTSMaxAge()
}
func GlobalHSTSMaxAge() string {
return common.PropertyGetDefault("nginx", "--global", "hsts-max-age", "15724800")
}
func AppHSTSPreload(appName string) string {
return common.PropertyGet("nginx", appName, "hsts-preload")
}
func ComputedHSTSPreload(appName string) string {
appValue := AppHSTSPreload(appName)
if appValue != "" {
return appValue
}
return GlobalHSTSPreload()
}
func GlobalHSTSPreload() string {
return common.PropertyGetDefault("nginx", "--global", "hsts-preload", "false")
}
func AppHSTS(appName string) string {
return common.PropertyGet("nginx", appName, "hsts")
}
func ComputedHSTS(appName string) string {
appValue := AppHSTS(appName)
if appValue != "" {
return appValue
}
return GlobalHSTS()
}
func GlobalHSTS() string {
return common.PropertyGetDefault("nginx", "--global", "hsts", "true")
}
func AppNginxConfSigilPath(appName string) string {
return common.PropertyGet("nginx", appName, "nginx-conf-sigil-path")
}
func ComputedNginxConfSigilPath(appName string) string {
appValue := AppNginxConfSigilPath(appName)
if appValue != "" {
return appValue
}
return GlobalNginxConfSigilPath()
}
func GlobalNginxConfSigilPath() string {
return common.PropertyGetDefault("nginx", "--global", "nginx-conf-sigil-path", "nginx.conf.sigil")
}
func AppNginxServiceCommand(appName string) string {
return common.PropertyGet("nginx", appName, "nginx-service-command")
}
func ComputedNginxServiceCommand(appName string) string {
appValue := AppNginxServiceCommand(appName)
if appValue != "" {
return appValue
}
return GlobalNginxServiceCommand()
}
func GlobalNginxServiceCommand() string {
return common.PropertyGetDefault("nginx", "--global", "nginx-service-command", "")
}
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 AppProxyBufferSize(appName string) string {
return common.PropertyGet("nginx", appName, "proxy-buffer-size")
}
func ComputedProxyBufferSize(appName string) string {
appValue := AppProxyBufferSize(appName)
if appValue != "" {
return appValue
}
return GlobalProxyBufferSize()
}
func GlobalProxyBufferSize() string {
return common.PropertyGetDefault("nginx", "--global", "proxy-buffer-size", fmt.Sprintf("%dk", os.Getpagesize()/1024))
}
func AppProxyBuffering(appName string) string {
return common.PropertyGet("nginx", appName, "proxy-buffering")
}
func ComputedProxyBuffering(appName string) string {
appValue := AppProxyBuffering(appName)
if appValue != "" {
return appValue
}
return GlobalProxyBuffering()
}
func GlobalProxyBuffering() string {
return common.PropertyGetDefault("nginx", "--global", "proxy-buffering", "on")
}
func AppProxyBuffers(appName string) string {
return common.PropertyGet("nginx", appName, "proxy-buffers")
}
func ComputedProxyBuffers(appName string) string {
appValue := AppProxyBuffers(appName)
if appValue != "" {
return appValue
}
return GlobalProxyBuffers()
}
func GlobalProxyBuffers() string {
return common.PropertyGetDefault("nginx", "--global", "proxy-buffers", fmt.Sprintf("8 %dk", os.Getpagesize()/1024))
}
func AppProxyBusyBuffersSize(appName string) string {
return common.PropertyGet("nginx", appName, "proxy-busy-buffers-size")
}
func ComputedProxyBusyBuffersSize(appName string) string {
appValue := AppProxyBusyBuffersSize(appName)
if appValue != "" {
return appValue
}
return GlobalProxyBusyBuffersSize()
}
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")
}
func ComputedProxyReadTimeout(appName string) string {
appValue := AppProxyReadTimeout(appName)
if appValue != "" {
return appValue
}
return GlobalProxyReadTimeout()
}
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")
}
func ComputedUnderscoreInHeaders(appName string) string {
appValue := AppUnderscoreInHeaders(appName)
if appValue != "" {
return appValue
}
return GlobalUnderscoreInHeaders()
}
func GlobalUnderscoreInHeaders() string {
return common.PropertyGetDefault("nginx", "--global", "underscore-in-headers", "off")
}
func AppXForwardedForValue(appName string) string {
return common.PropertyGet("nginx", appName, "x-forwarded-for-value")
}
func ComputedXForwardedForValue(appName string) string {
appValue := AppXForwardedForValue(appName)
if appValue != "" {
return appValue
}
return GlobalXForwardedForValue()
}
func GlobalXForwardedForValue() string {
return common.PropertyGetDefault("nginx", "--global", "x-forwarded-for-value", "$remote_addr")
}
func AppXForwardedPortValue(appName string) string {
return common.PropertyGet("nginx", appName, "x-forwarded-port-value")
}
func ComputedXForwardedPortValue(appName string) string {
appValue := AppXForwardedPortValue(appName)
if appValue != "" {
return appValue
}
return GlobalXForwardedPortValue()
}
func GlobalXForwardedPortValue() string {
return common.PropertyGetDefault("nginx", "--global", "x-forwarded-port-value", "$server_port")
}
func AppXForwardedProtoValue(appName string) string {
return common.PropertyGet("nginx", appName, "x-forwarded-proto-value")
}
func ComputedXForwardedProtoValue(appName string) string {
appValue := AppXForwardedProtoValue(appName)
if appValue != "" {
return appValue
}
return GlobalXForwardedProtoValue()
}
func GlobalXForwardedProtoValue() string {
return common.PropertyGetDefault("nginx", "--global", "x-forwarded-proto-value", "$scheme")
}
func AppXForwardedSSL(appName string) string {
return common.PropertyGet("nginx", appName, "x-forwarded-ssl")
}
func ComputedXForwardedSSL(appName string) string {
appValue := AppXForwardedSSL(appName)
if appValue != "" {
return appValue
}
return GlobalXForwardedSSL()
}
func GlobalXForwardedSSL() string {
return common.PropertyGetDefault("nginx", "--global", "x-forwarded-ssl", "")
}