#!/bin/bash # Reverse Proxy Manager for Proxy-Core # Version: 2.1.1 # Author: houseassassin # Supports: Nginx, Caddy, HAProxy set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/lib/common.sh" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' MAGENTA='\033[0;35m' CYAN='\033[0;36m' WHITE='\033[1;37m' NC='\033[0m' # Configuration NGINX_DIR="/etc/nginx" CADDY_DIR="/etc/caddy" HAPROXY_DIR="/etc/haproxy" # Detect installed reverse proxies detect_installed_proxies() { local proxies=() if command_exists nginx; then proxies+=("nginx") fi if command_exists caddy; then proxies+=("caddy") fi if command_exists haproxy; then proxies+=("haproxy") fi echo "${proxies[@]}" } # Install Nginx install_nginx() { log "Установка Nginx..." case $OS in ubuntu|debian) apt-get update -y apt-get install -y nginx nginx-extras certbot python3-certbot-nginx ;; centos|rhel|fedora) yum install -y nginx certbot python3-certbot-nginx ;; esac systemctl enable nginx systemctl start nginx success "Nginx установлен" } # Install Caddy install_caddy() { log "Установка Caddy..." case $OS in ubuntu|debian) apt-get install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list apt-get update apt-get install -y caddy ;; centos|rhel|fedora) yum install -y yum-plugin-copr yum copr enable @caddy/caddy -y yum install -y caddy ;; esac systemctl enable caddy systemctl start caddy success "Caddy установлен" } # Install HAProxy install_haproxy() { log "Установка HAProxy..." case $OS in ubuntu|debian) apt-get update -y apt-get install -y haproxy certbot ;; centos|rhel|fedora) yum install -y haproxy certbot ;; esac systemctl enable haproxy systemctl start haproxy success "HAProxy установлен" } # Configure Nginx for 3x-ui configure_nginx_3xui() { log "Настройка Nginx для 3x-ui..." read -p "Введите домен (например, vpn.example.com): " DOMAIN read -p "Введите порт 3x-ui (по умолчанию 2053): " XRAY_PORT XRAY_PORT=${XRAY_PORT:-2053} if ! [[ "$XRAY_PORT" =~ ^[0-9]+$ ]] || [ "$XRAY_PORT" -lt 1 ] || [ "$XRAY_PORT" -gt 65535 ]; then error "Неверный порт: $XRAY_PORT" return 1 fi cat > "$NGINX_DIR/sites-available/3xui" < "$NGINX_DIR/sites-available/3xui" < "$CADDY_DIR/Caddyfile" < "$HAPROXY_DIR/haproxy.cfg" <> "$HAPROXY_DIR/haproxy.cfg" done haproxy -c -f "$HAPROXY_DIR/haproxy.cfg" systemctl reload haproxy success "HAProxy настроен для балансировки нагрузки" } # Configure Nginx + Caddy (hybrid) configure_hybrid_nginx_caddy() { log "Настройка гибридной конфигурации Nginx + Caddy..." echo "" echo -e "${CYAN}Гибридная конфигурация:${NC}" echo "• Nginx - обработка статики и кэширование" echo "• Caddy - автоматический SSL и проксирование" echo "" read -p "Введите домен: " DOMAIN # Nginx для статики cat > "$NGINX_DIR/sites-available/hybrid" < "$CADDY_DIR/Caddyfile" <