#!/bin/bash # Generate an nginx site config for one domain from the template. # # Usage: # sudo ./scripts/generate-nginx-conf.sh мои-товары.рф # sudo ./scripts/generate-nginx-conf.sh my-products.ru # # Writes to /etc/nginx/sites-available/.conf and symlinks to sites-enabled. # If no argument is given, DOMAIN is read from .env. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_DIR="$(dirname "$SCRIPT_DIR")" TEMPLATE="$REPO_DIR/nginx/nginx.conf.template" # ── resolve domain ──────────────────────────────────────────────────────────── if [ -n "${1:-}" ]; then DOMAIN="$1" else if [ -f "$REPO_DIR/.env" ]; then DOMAIN_FROM_ENV=$(grep -E '^DOMAIN=' "$REPO_DIR/.env" | cut -d= -f2- | tr -d '"'"'" | head -1) DOMAIN="${DOMAIN:-${DOMAIN_FROM_ENV:-}}" fi fi if [ -z "${DOMAIN:-}" ]; then echo "ERROR: no domain specified." >&2 echo "Usage: $0 or set DOMAIN= in .env" >&2 exit 1 fi CONF_FILE="/etc/nginx/sites-available/${DOMAIN}.conf" ENABLED_LINK="/etc/nginx/sites-enabled/${DOMAIN}.conf" echo "==> Generating nginx config for: $DOMAIN" DOMAIN="$DOMAIN" envsubst '$DOMAIN' < "$TEMPLATE" | sudo tee "$CONF_FILE" > /dev/null if [ ! -L "$ENABLED_LINK" ]; then sudo ln -s "$CONF_FILE" "$ENABLED_LINK" echo "==> Symlinked to sites-enabled" else echo "==> Symlink already exists in sites-enabled" fi echo "==> Testing nginx config..." sudo nginx -t echo "" echo "==> Config written to: $CONF_FILE" echo " Reload nginx to apply: sudo systemctl reload nginx"