Re-enabling vhost on an app that was previously deployed with no global VHOST left the auto-assigned random high port behind in the ports plugin's `map-detected` property, so nginx kept listening on that port and the new catch-all default vhost rejected requests for the app's own domain on port 80.
41 lines
1.3 KiB
Bash
Executable File
41 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
|
|
|
trigger-nginx-vhosts-pre-enable-vhost() {
|
|
declare desc="unset port prior to vhosts being enabled"
|
|
declare trigger="pre-enable-vhost"
|
|
declare APP="$1"
|
|
|
|
if [[ "$(plugn trigger proxy-type "$APP")" != "nginx" ]]; then
|
|
return
|
|
fi
|
|
|
|
# clear stored proxy ports so they can be recomputed for the enabled state
|
|
local PROXY_PORT=$(plugn trigger ports-get-property "$APP" "proxy-port")
|
|
local PROXY_SSL_PORT=$(plugn trigger ports-get-property "$APP" "proxy-ssl-port")
|
|
|
|
if [[ -n "$PROXY_PORT" ]]; then
|
|
fn-plugin-property-delete "proxy" "$APP" "proxy-port"
|
|
fi
|
|
if [[ -n "$PROXY_SSL_PORT" ]]; then
|
|
fn-plugin-property-delete "proxy" "$APP" "proxy-ssl-port"
|
|
fi
|
|
|
|
# clear auto-detected port maps so they get recomputed for vhost mode
|
|
fn-plugin-property-delete "ports" "$APP" "map-detected"
|
|
|
|
# clear ports if there is a mapping starting with http:80 or https:443
|
|
local PORT_MAPS=$(plugn trigger ports-get "$APP")
|
|
for PORT_MAP in $PORT_MAPS; do
|
|
if [[ "$PORT_MAP" == "http:80:"* ]] || [[ "$PORT_MAP" == "https:443:"* ]]; then
|
|
plugn trigger ports-clear "$APP"
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
trigger-nginx-vhosts-pre-enable-vhost "$@"
|