server {
    listen 81 ssl http2 reuseport;
    ssl_certificate /etc/xray/xray.crt;
    ssl_certificate_key /etc/xray/xray.key;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    root /var/www/html;
}
server {
    listen 1010 proxy_protocol so_keepalive=on reuseport;
    set_real_ip_from 127.0.0.1;
    real_ip_header proxy_protocol;
    client_body_buffer_size 512K;  
    client_header_buffer_size 4k;  
    client_max_body_size 300M;     
    large_client_header_buffers 4 8k; 
    client_header_timeout 60s;       
    keepalive_timeout 60s;          
    add_header X-HTTP-LEVEL-HEADER 1;
    add_header X-ANOTHER-HTTP-LEVEL-HEADER 1;
    add_header X-SERVER-LEVEL-HEADER 1;
    add_header X-LOCATION-LEVEL-HEADER 1;
    add_header X-XSS-Protection "1; mode=block";

    location ~ /vmess {
        if ($http_upgrade != "Websocket") {
            rewrite ^/(.*) /vmess break;
        }
        proxy_headers_hash_max_size 1024;
        proxy_headers_hash_bucket_size 256;
        proxy_http_version 1.1;
        proxy_redirect off;
        resolver 1.1.1.1;
        proxy_pass http://127.0.0.1:10002;
        
        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;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_read_timeout 24h; 
        proxy_send_timeout 24h; 
    }

    location ~ /vless {
        if ($http_upgrade != "Websocket") {
            rewrite ^/(.*) /vless break;
        }
        proxy_headers_hash_max_size 512;
        proxy_headers_hash_bucket_size 128;
        proxy_http_version 1.1;
        proxy_redirect off;
        resolver 1.1.1.1;
        proxy_pass http://127.0.0.1:10001;
        
        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;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_read_timeout 24h; 
        proxy_send_timeout 24h; 
    }
    location ~ /trojan-ws {
        if ($http_upgrade != "Websocket") {
            rewrite ^/(.*) /trojan-ws break;
        }
        proxy_headers_hash_max_size 1024;
        proxy_headers_hash_bucket_size 256;
        proxy_http_version 1.1;
        proxy_redirect off;
        resolver 1.1.1.1;
        proxy_pass http://127.0.0.1:10003;
        
        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;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_read_timeout 24h; 
        proxy_send_timeout 24h; 
    }

    location ~ /ss-ws {
        if ($http_upgrade != "Websocket") {
            rewrite ^/(.*) /ss-ws break;
        }
        proxy_headers_hash_max_size 1024;
        proxy_headers_hash_bucket_size 256;
        proxy_http_version 1.1;
        proxy_redirect off;
        resolver 1.1.1.1;
        proxy_pass http://127.0.0.1:10004;
        
        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;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_read_timeout 24h; 
        proxy_send_timeout 24h; 
    }

    location ~ / {
        if ($http_upgrade != "Websocket") {
            rewrite ^/(.*) /gemilangstoressh break;
        }
        proxy_headers_hash_max_size 1024;
        proxy_headers_hash_bucket_size 256;
        proxy_http_version 1.1;
        proxy_redirect off;
        resolver 1.1.1.1;
        proxy_pass http://127.0.0.1:10015;
        
        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;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_read_timeout 24h; 
        proxy_send_timeout 24h; 
    }
}
server {
    listen 1013 http2 proxy_protocol so_keepalive=on reuseport;
    grpc_set_header X-SERVER-LEVEL-HEADER 1;
    grpc_set_header X-LOCATION-LEVEL-HEADER 1;
    client_body_buffer_size 512K;  
    client_header_buffer_size 4k;  
    client_max_body_size 100M;      
    large_client_header_buffers 4 8k;
    client_header_timeout 60s;  
    keepalive_timeout 60s;         

    location ~ /vless-grpc {
        grpc_pass grpc://127.0.0.1:10005;
        grpc_set_header Host $host;
        grpc_set_header X-Real-IP $remote_addr;
        grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        grpc_set_header X-Forwarded-Proto $scheme;
        grpc_set_header X-Forwarded-Host $host;
        grpc_set_header X-Forwarded-Port $server_port;
        grpc_read_timeout 24h; 
        grpc_send_timeout 24h; 
    }

    location ~ /vmess-grpc {
        grpc_pass grpc://127.0.0.1:10006;
        grpc_set_header Host $host;
        grpc_set_header X-Real-IP $remote_addr;
        grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        grpc_set_header X-Forwarded-Proto $scheme;
        grpc_set_header X-Forwarded-Host $host;
        grpc_set_header X-Forwarded-Port $server_port;
        grpc_read_timeout 24h; 
        grpc_send_timeout 24h; 
    }

    location ~ /trojan-grpc {
        grpc_pass grpc://127.0.0.1:10007;
        grpc_set_header Host $host;
        grpc_set_header X-Real-IP $remote_addr;
        grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        grpc_set_header X-Forwarded-Proto $scheme;
        grpc_set_header X-Forwarded-Host $host;
        grpc_set_header X-Forwarded-Port $server_port;
        grpc_read_timeout 24h; 
        grpc_send_timeout 24h; 
    }

    location ~ /ss-grpc {
        grpc_pass grpc://127.0.0.1:10008;
        grpc_set_header Host $host;
        grpc_set_header X-Real-IP $remote_addr;
        grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        grpc_set_header X-Forwarded-Proto $scheme;
        grpc_set_header X-Forwarded-Host $host;
        grpc_set_header X-Forwarded-Port $server_port;
        grpc_read_timeout 24h; 
        grpc_send_timeout 24h; 
    }
}
