upstream im_msg_gateway{
            server 127.0.0.1:10001;        #IM Message server address Multiple can be specified according to the deployment
            }
upstream im_api{
            server 127.0.0.1:10002;        #IM Group user api server address Multiple can be specified according to the deployment
            }
upstream im_grafana{
            server 127.0.0.1:10007;        #IM Statistical server address The machine where docker-compose starts
            }
upstream im_chat_api{
            server 127.0.0.1:10008;        #IM Business version login registration server address Multiple can be specified according to the deployment
            }
upstream im_admin_api{
            server 127.0.0.1:10009;         #IM The admin address of the commercial version can specify multiple units according to the deployment situation
            }
upstream im_open_rtc{
            server 127.0.0.1:7880;          #rtc Audio and video call server address Multiple devices can be specified according to the deployment
            }
upstream minio_s3_2 {
            least_conn;
            server 127.0.0.1:10005;
}

upstream minio_console_2 {
           least_conn;
           server 127.0.0.1:9090;
}
server {
        listen 443;
        server_name your-domain.com;   #your-domain.com

        ssl on;
        ssl_certificate /etc/nginx/conf.d/ssl/your-domain.com.crt; #2 Certificate
        ssl_certificate_key /etc/nginx/conf.d/ssl/your-domain.com.key; #3 Certificate
        ssl_session_timeout 5m;
		gzip on;
		gzip_min_length 1k;
		gzip_buffers 4 16k;
		gzip_comp_level 2;
		gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
		gzip_vary off;
		gzip_disable "MSIE [1-6]\.";
        error_page 405 =200 $uri;

	default_type application/wasm;
        location /{ #web demo
                proxy_set_header Host $host;
                proxy_set_header X-Real-Ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-NginX-Proxy true;
                root /data1/online/Pc-Web-Demo/build/; # web im static resource storage path
                index index.html;
                try_files $uri $uri/ /index.html;
        }
        location /msg_gateway { #10001 ws
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://im_msg_gateway/;
        }
        location ^~/api/ { #10002 api
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://im_api/;
               }
        location ^~/grafana/ { #10007  prometheus
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://im_grafana/;
               }
        location ^~/chat/ { #10008 im_chat_api
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "Upgrade";
                    proxy_set_header X-real-ip $remote_addr;
                    proxy_set_header X-Forwarded-For $remote_addr;
                    proxy_pass http://im_chat_api/;
                   }
        location ^~/complete_admin/ { #10009  admin
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://im_admin_api/;
               }
        location ^~/open_rtc/ {  #7880 rtc
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://im_open_rtc/;
              }
}

server {
        listen 80;
        server_name test-web.rentsoft.cn ; #1 web im end domain name
        rewrite ^(.*)$ https://${server_name}$1 permanent;
}


server {
    listen   443;

    server_name your-domain.com; #your-domain.com
    ssl on;
    ssl_certificate /etc/nginx/conf.d/ssl/your-domain.com.crt; #Certificate
    ssl_certificate_key /etc/nginx/conf.d/ssl/your-domain.com.key;    #Certificate
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    # Allow special characters in headers
    ignore_invalid_headers off;
    # Allow any size file to be uploaded.
    # Set to a value such as 1000m; to restrict file size to a specific value
    client_max_body_size 0;
    # Disable buffering
    proxy_buffering off;
    proxy_request_buffering off;

    location / {
        proxy_set_header Host $http_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_connect_timeout 300;
        # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;

        proxy_pass http://minio_s3_2; # This uses the upstream directive definition to load balance
    }

    location /minio/ui {
        rewrite ^/minio/ui/(.*) /$1 break;
        proxy_set_header Host $http_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_set_header X-NginX-Proxy true;

        # This is necessary to pass the correct IP to be hashed
        real_ip_header X-Real-IP;

        proxy_connect_timeout 300;

        # To support websockets in MinIO versions released after January 2023
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        chunked_transfer_encoding off;

        proxy_pass http://minio_console_2; # This uses the upstream directive definition to load balance
    }
}