#!/bin/bash # TaxBaik Nginx 설정 자동 수정 스크립트 # 경로 최적화 이후 Nginx에서 /taxbaik 프리픽스를 제거하도록 설정 set -e echo "🚀 TaxBaik Nginx 설정 수정" echo "==============================" echo "" # 색상 정의 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 1. Nginx 설정 파일 찾기 echo "📍 Nginx 설정 파일 찾기..." if [ ! -f "/etc/nginx/sites-available/taxbaik-domains.conf" ]; then echo -e "${RED}❌ 파일 없음: /etc/nginx/sites-available/taxbaik-domains.conf${NC}" exit 1 fi NGINX_FILE="/etc/nginx/sites-available/taxbaik-domains.conf" echo -e "${GREEN}✅ 파일 발견: $NGINX_FILE${NC}" echo "" # 2. 백업 생성 echo "💾 백업 생성..." BACKUP_FILE="${NGINX_FILE}.backup.$(date +%Y%m%d_%H%M%S)" cp "$NGINX_FILE" "$BACKUP_FILE" echo -e "${GREEN}✅ 백업: $BACKUP_FILE${NC}" echo "" # 3. 현재 설정 확인 echo "📋 현재 설정 확인..." echo -e "${BLUE}" grep -A 10 "location /taxbaik" "$NGINX_FILE" | head -15 echo -e "${NC}" echo "" # 4. 설정 수정 echo "🔧 설정 수정 중..." # 임시 파일 생성 TEMP_FILE="${NGINX_FILE}.tmp" # sed를 사용하여 설정 수정 sed -e '/location \/taxbaik {/,/^[[:space:]]*}[[:space:]]*$/{ /location \/taxbaik {/c\ location /taxbaik/ { /proxy_pass[[:space:]]*http:\/\/127.0.0.1:5001;/c\ proxy_pass http://127.0.0.1:5001/; /proxy_pass[[:space:]]*http:\/\/127.0.0.1:5001;/a\ rewrite ^/taxbaik/(.*)$ /$1 break; }' "$NGINX_FILE" > "$TEMP_FILE" # 수정된 설정 확인 if grep -q "rewrite ^/taxbaik/" "$TEMP_FILE"; then mv "$TEMP_FILE" "$NGINX_FILE" echo -e "${GREEN}✅ 설정 수정 완료${NC}" else echo -e "${YELLOW}⚠️ 수정 실패, 다른 방법 시도 중...${NC}" rm "$TEMP_FILE" # 수동 수정 (더 신뢰할 수 있는 방법) python3 << 'PYTHON_SCRIPT' import re nginx_file = "/etc/nginx/sites-available/taxbaik-domains.conf" with open(nginx_file, 'r') as f: content = f.read() # location /taxbaik { 을 location /taxbaik/ { 로 변경 content = content.replace('location /taxbaik {', 'location /taxbaik/ {') # proxy_pass http://127.0.0.1:5001; 을 찾아서 수정 pattern = r'(location /taxbaik/ \{.*?)(proxy_pass\s+http://127\.0\.0\.1:5001;)' replacement = r'\1proxy_pass http://127.0.0.1:5001/;' content = re.sub(pattern, replacement, content, flags=re.DOTALL) # rewrite 규칙 추가 (이미 있으면 스킵) if 'rewrite ^/taxbaik/' not in content: pattern = r'(location /taxbaik/ \{.*?proxy_pass.*?;)' replacement = r'\1\n rewrite ^/taxbaik/(.*)$ /$1 break;' content = re.sub(pattern, replacement, content, flags=re.DOTALL) with open(nginx_file, 'w') as f: f.write(content) print("✅ Python을 통한 수정 완료") PYTHON_SCRIPT fi echo "" # 5. 수정 결과 확인 echo "📋 수정된 설정 확인..." echo -e "${BLUE}" grep -A 10 "location /taxbaik" "$NGINX_FILE" | head -15 echo -e "${NC}" echo "" # 6. Nginx 문법 검증 echo "🔍 Nginx 문법 검증..." if nginx -t 2>&1 | grep -q "successful"; then echo -e "${GREEN}✅ 문법 검증 성공${NC}" SYNTAX_OK=1 else echo -e "${RED}❌ 문법 오류 발생${NC}" echo "오류 내용:" nginx -t SYNTAX_OK=0 fi echo "" # 7. Nginx 재시작 또는 롤백 if [ $SYNTAX_OK -eq 1 ]; then echo "🔄 Nginx 재로드..." if systemctl reload nginx 2>&1; then echo -e "${GREEN}✅ Nginx 재로드 성공${NC}" else echo -e "${YELLOW}⚠️ Nginx 재로드 실패, 설정 롤백...${NC}" cp "$BACKUP_FILE" "$NGINX_FILE" systemctl reload nginx echo -e "${RED}❌ 롤백 완료${NC}" exit 1 fi else echo -e "${RED}❌ 문법 오류로 인해 설정 롤백${NC}" cp "$BACKUP_FILE" "$NGINX_FILE" exit 1 fi echo "" # 8. 최종 확인 echo "🧪 최종 확인..." echo "" echo -e "${BLUE}=== 설정 확인 ===${NC}" grep -A 5 "location /taxbaik" "$NGINX_FILE" | head -8 echo "" echo -e "${GREEN}✅ 설정 수정 완료!${NC}" echo "" echo "📝 변경 사항:" echo " 1. location /taxbaik → location /taxbaik/ (슬래시 추가)" echo " 2. proxy_pass http://127.0.0.1:5001; → proxy_pass http://127.0.0.1:5001/; (슬래시 추가)" echo " 3. rewrite 규칙 추가: ^/taxbaik/(.*)$ /$1 break" echo "" echo "🔙 백업 파일: $BACKUP_FILE" echo "" echo "✨ 배포 다음 단계:" echo " 1. E2E 테스트 실행: npx playwright test" echo " 2. 공개 사이트 확인: http://www.taxbaik.com/taxbaik/" echo " 3. 관리자 페이지 확인: http://www.taxbaik.com/taxbaik/admin/"