worker_processes 5;
error_log /dev/stderr error;
pid /tmp/nginx.pid;
worker_rlimit_nofile 8192;
events {
    worker_connections 4096;
}
http {
    upstream zipkin {
        zone zipkin_zone 64k;
        server worker-address:9411 resolve;
    }
    upstream otlp-grpc {
        zone otlp-grpc_zone 64k;
        server worker-address:4317 resolve;
    }
    upstream otlp-http {
        zone otlp-http_zone 64k;
        server worker-address:4318 resolve;
    }
    upstream jaeger-thrift-http {
        zone jaeger-thrift-http_zone 64k;
        server worker-address:14268 resolve;
    }
    upstream jaeger-grpc {
        zone jaeger-grpc_zone 64k;
        server worker-address:14250 resolve;
    }
    upstream tempo-http {
        zone tempo-http_zone 64k;
        server worker-address:3200 resolve;
    }
    upstream tempo-grpc {
        zone tempo-grpc_zone 64k;
        server worker-address:9096 resolve;
    }
    client_body_temp_path /tmp/client_temp;
    proxy_temp_path /tmp/proxy_temp_path;
    fastcgi_temp_path /tmp/fastcgi_temp;
    uwsgi_temp_path /tmp/uwsgi_temp;
    scgi_temp_path /tmp/scgi_temp;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local]  $status "$request" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    map $status $loggable {
        ~^[23] 0;
        default 1;
    }
    access_log /dev/stderr;
    sendfile on;
    tcp_nopush on;
    resolver 198.18.0.0;
    map $http_x_scope_orgid $ensured_x_scope_orgid {
        default $http_x_scope_orgid;
        '' anonymous;
    }
    proxy_read_timeout 300;
    server {
        listen 9411 ssl;
        listen [::]:9411 ssl;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend https://zipkin;
            proxy_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 4317 ssl;
        listen [::]:4317 ssl;
        http2 on;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend grpcs://otlp-grpc;
            grpc_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 4318 ssl;
        listen [::]:4318 ssl;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend https://otlp-http;
            proxy_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 14268 ssl;
        listen [::]:14268 ssl;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend https://jaeger-thrift-http;
            proxy_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 14250 ssl;
        listen [::]:14250 ssl;
        http2 on;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend grpcs://jaeger-grpc;
            grpc_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 3200 ssl;
        listen [::]:3200 ssl;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend https://tempo-http;
            proxy_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
    server {
        listen 9096 ssl;
        listen [::]:9096 ssl;
        http2 on;
        proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;
        server_name localhost;
        ssl_certificate /etc/nginx/certs/server.cert;
        ssl_certificate_key /etc/nginx/certs/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            set $backend grpcs://tempo-grpc;
            grpc_pass $backend;
            proxy_connect_timeout 5s;
        }
    }
}