Files
dokku/plugins/nginx-vhosts/pre-enable-vhost
Jose Diaz-Gonzalez eaaf0e41c2 fix: clear auto-detected port maps when re-enabling vhost
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.
2026-04-27 15:43:33 -04:00

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 "$@"