 cat /etc/nginx/sites-available/hamonize.conf 
server {
    listen 80;
    server_name demo.hamonize.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name demo.hamonize.com;

    ssl_certificate /etc/letsencrypt/live/demo.hamonize.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/demo.hamonize.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5700;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /ragsearch/ {
        proxy_pass http://127.0.0.1:5600/;

        # 헤더 설정
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        proxy_connect_timeout 30s;
        proxy_send_timeout 90s;
        proxy_read_timeout 90s;

        proxy_buffering on;
        proxy_buffer_size 8k;
        proxy_buffers 16 8k;
        proxy_busy_buffers_size 16k;

        # 클라이언트 요청 크기 제한
        client_max_body_size 200M;

        # CORS 헤더 추가
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        add_header Access-Control-Allow-Headers "Content-Type, Authorization";

        # OPTIONS 메서드 처리 (CORS preflight)
        if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "Content-Type, Authorization";
            add_header Access-Control-Max-Age 86400;
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
        
    }

    location /websearch/ {
        # 중요: 슬래시 처리 수정
        proxy_pass http://127.0.0.1:5610/;
        
        # 헤더 설정
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # HTTP 버전 및 연결 설정
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        
        # 타임아웃 설정 (웹검색은 시간이 오래 걸림)
        proxy_connect_timeout 30s;
        proxy_send_timeout 90s;
        proxy_read_timeout 90s;
        
        # 버퍼 설정
        proxy_buffering on;
        proxy_buffer_size 8k;
        proxy_buffers 16 8k;
        proxy_busy_buffers_size 16k;
        
        # 클라이언트 요청 크기 제한
        client_max_body_size 10M;
        
        # CORS 헤더 추가
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        add_header Access-Control-Allow-Headers "Content-Type, Authorization";
        
        # OPTIONS 메서드 처리 (CORS preflight)
        if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "Content-Type, Authorization";
            add_header Access-Control-Max-Age 86400;
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
    }    



    location /reportsearch/ {
        # 중요: 슬래시 처리 수정
        proxy_pass http://127.0.0.1:5620/;

        # 헤더 설정
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # HTTP 버전 및 연결 설정
        proxy_http_version 1.1;
        proxy_set_header Connection "";

        # 타임아웃 설정 (웹검색은 시간이 오래 걸림)
        proxy_connect_timeout 30s;
        proxy_send_timeout 180s;
        proxy_read_timeout 180s;

        # 버퍼 설정
	proxy_request_buffering off;
        proxy_buffering off;
        proxy_buffer_size 8k;
        proxy_buffers 16 8k;
        proxy_busy_buffers_size 16k;

        # 클라이언트 요청 크기 제한
        client_max_body_size 10M;

        # CORS 헤더 추가
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        add_header Access-Control-Allow-Headers "Content-Type, Authorization";

        # OPTIONS 메서드 처리 (CORS preflight)
        if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "Content-Type, Authorization";
            add_header Access-Control-Max-Age 86400;
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
    }


}

server {
    listen 80;
    server_name api.hamonize.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name api.hamonize.com;

    ssl_certificate /etc/letsencrypt/live/api.hamonize.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.hamonize.com/privkey.pem;
    
    client_max_body_size 200M;


    location /ollama/ {
        proxy_pass http://127.0.0.1:11434/;
        proxy_read_timeout 300;      # 5분으로 증가 (기본: 60초)
        proxy_connect_timeout 60;    # 연결 타임아웃
        proxy_send_timeout 60;       # 전송 타임아웃	
	proxy_set_header Host 127.0.0.1;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
    }

    location /vllm/ {
        proxy_pass http://127.0.0.1:11435/;
        proxy_read_timeout 300;      # 5분으로 증가 (기본: 60초)
        proxy_connect_timeout 60;    # 연결 타임아웃
        proxy_send_timeout 60;       # 전송 타임아웃	
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
    }

    location / {
        proxy_pass http://127.0.0.1:5500;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

}

server {
    listen 80;
    server_name rag.hamonize.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name rag.hamonize.com;
    ssl_certificate     /etc/letsencrypt/live/rag.hamonize.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/rag.hamonize.com/privkey.pem;
    
    client_max_body_size 200M;

    location / {
        proxy_pass http://127.0.0.1:5600;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}



server {
    listen 80;
    server_name hamonize.com www.hamonize.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name hamonize.com www.hamonize.com;
    ssl_certificate     /etc/letsencrypt/live/hamonize.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hamonize.com/privkey.pem;

    client_max_body_size 200M;

    location / {
        proxy_pass http://127.0.0.1:5700;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

