worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 20480m;
    error_log /var/log/nginx/error.log debug;
    server {
        listen       8000;
        server_name  localhost;

        location /api/{
#            rewrite ^/prod-api/(.*)$ /$1 break;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
            proxy_connect_timeout 500s;  # 设置连接超时时间为 120 秒
            proxy_read_timeout 500s;     # 设置读取超时时间为 120 秒
            proxy_send_timeout 500s;     # 设置发送超时时间为 120 秒
        }
        
        location /label-studio/ {
           # rewrite ^/label-studio/(.*)$ /$1 break;
           proxy_pass http://label-studio-service.argo.svc:8080/projects/;
           proxy_hide_header X-Frame-Options;
           add_header X-Frame-Options ALLOWALL;
        }

        location / {
            rewrite ^/prod-api/(.*)$ /$1 break;
            root   /home/ruoyi/projects/ruoyi-ui;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
        
       location /api/v1/model/ {
            proxy_pass http://pipeline-convert-service.argo.svc:80;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
  #    location /api/v1/realtimeStatus {
  #          proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
  #          proxy_set_header REMOTE-HOST $remote_addr;
  #          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  #     }

          
        location /api/v1/tensorboard/show {
        # 提取查询参数中的 `svc` 值
        set $svc "";
        if ($arg_svc) {
            set $svc $arg_svc;
        }

        # 将请求转发到动态生成的内部服务地址
        proxy_pass http://$svc.argo.svc:6006;

        # 传递必要的头信息
        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;

        # 对于 WebSocket 应用很重要
        proxy_buffering off;
       }

          location /api/v1/realtimeStatus {
        rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
        
        proxy_pass https://argo-server.argo.svc:2746;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 保留查询参数
        proxy_set_header X-Original-URI $request_uri;

        # 禁用缓冲
        proxy_buffering off;

        # 增加超时时间
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_connect_timeout 60s;

        # 设置传递的请求头
       # proxy_set_header Connection '';
       # chunked_transfer_encoding off;

        # 如果需要保留自定义头部
        proxy_set_header Accept 'text/event-stream';
    }

       
       location /newlog/realtimeLog {
 	   proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
    	   proxy_http_version 1.1;
    	   proxy_set_header Upgrade $http_upgrade;
    	   proxy_set_header Connection "Upgrade";
    	   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;
	}

        location @router {
            rewrite ^.*$ /index.html last;
        }

        # 避免actuator暴露
        if ($request_uri ~ "/actuator") {
            return 403;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
