#!/bin/sh
|
set -e ${DEBUG:+-x}
|
|
NGINX_CONFIG=$OPT_DIR/nginx/nginx.conf
|
|
echo >&3 "=> Copy nginx config file..."
|
mkdir -p "$OPT_DIR/nginx"
|
\cp -f /etc/nginx/nginx.conf $NGINX_CONFIG
|
|
echo >&3 "=> Configure system resolver..."
|
# Process each nameserver individually, wrapping only valid IPv6 addresses in square brackets.
|
# This regex accepts only hex digits and colons so that IPv4 addresses with :port are not captured.
|
nameservers=$(awk '$1=="nameserver" {
|
ns = $2;
|
# Capture only IPv6 addresses (they contain a colon and no dot)
|
if (ns ~ /^[0-9a-fA-F:]+$/ && ns ~ /:/ && ns !~ /\./) {
|
printf "[%s] ", ns;
|
} else {
|
# IPv4 addresses
|
printf "%s ", ns;
|
}
|
}' /etc/resolv.conf)
|
echo "resolver $nameservers;" > $OPT_DIR/nginx/resolv.conf
|
|
# Configure nginx error logging
|
echo >&3 "=> Configuring nginx error logging..."
|
NGINX_ERROR_LOG_LEVEL=${NGINX_ERROR_LOG_LEVEL:-warn}
|
|
# Validate log level
|
case "$NGINX_ERROR_LOG_LEVEL" in
|
debug|info|notice|warn|error|crit|alert|emerg)
|
echo >&3 "=> Setting error log level to: $NGINX_ERROR_LOG_LEVEL"
|
;;
|
*)
|
echo >&3 "=> Warning: Invalid log level '$NGINX_ERROR_LOG_LEVEL', using 'warn' as default"
|
NGINX_ERROR_LOG_LEVEL=warn
|
;;
|
esac
|
|
sed -i "s|error_log /dev/stderr info;|error_log /dev/stderr $NGINX_ERROR_LOG_LEVEL;|g" $NGINX_CONFIG
|
|
if [ -n "${NGINX_SSL_CERT:-}" ]; then
|
echo >&3 "=> Replacing nginx certs..."
|
sed -i "s|^\(\s*\)#\(listen 8086.*\)$|\1\2|g" $NGINX_CONFIG
|
sed -i "s|^\(\s*\)#\(ssl_certificate .*\)@cert@;$|\1\2$NGINX_SSL_CERT;|g" $NGINX_CONFIG
|
sed -i "s|^\(\s*\)#\(ssl_certificate_key .*\)@certkey@;$|\1\2$NGINX_SSL_CERT_KEY;|g" $NGINX_CONFIG
|
echo >&3 "=> Successfully replaced nginx certs."
|
else
|
echo >&3 "=> Skipping replace nginx certs."
|
fi
|
|
if [ -n "${APP_HOST:-}" ]; then
|
echo >&3 "=> Replacing app endpoint..."
|
sed -i "s|localhost|${APP_HOST:-}|g" $NGINX_CONFIG
|
echo >&3 "=> Successfully replaced app endpoint."
|
else
|
echo >&3 "=> Skipping replace app endpoint."
|
fi
|
|
LABEL_STUDIO_HOST_NO_SCHEME=${LABEL_STUDIO_HOST#*//}
|
LABEL_STUDIO_HOST_NO_TRAILING_SLASH=${LABEL_STUDIO_HOST_NO_SCHEME%/}
|
LABEL_STUDIO_HOST_SUBPATH=$(echo "$LABEL_STUDIO_HOST_NO_TRAILING_SLASH" | cut -d'/' -f2- -s)
|
|
if [ -n "${LABEL_STUDIO_HOST_SUBPATH:-}" ] && [ -w $NGINX_CONFIG ]; then
|
echo >&3 "=> Adding subpath to nginx config $NGINX_CONFIG ..."
|
sed -i "s|^\(\s*\)\(location \/\)|\1\2$LABEL_STUDIO_HOST_SUBPATH\/|g" $NGINX_CONFIG
|
echo >&3 "=> Successfully added subpath to nginx config."
|
else
|
echo >&3 "=> Skipping adding subpath to nginx config."
|
fi
|