apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configmap
  namespace: django
data:
  nginx.conf: |
    worker_processes auto;

    pid /var/run/nginx.pid;

    events {
        use epoll;
        worker_connections 1024;
    }

    http {

        # Basic Settings
        large_client_header_buffers 8 128k;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 300;
        types_hash_max_size 2048;
        client_max_body_size 5000M;
        client_header_buffer_size 5M;
        # server_tokens off;
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Logging Settings
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        # GZIP Settings
        gzip on;
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        server {
            listen 80;
            listen [::]:80;
            root /opt/react_client/;

            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Allow-Methods' '*' always;
            add_header 'Access-Control-Allow-Headers' '*' always;

            location = /static/index.bundle.js {
                add_header Cache-Control 'no-store no-cache, must-revalidate, proxy-revalidate, max-age=0';
                if_modified_since off;
                expires off;
            }
            location ~^/api/pm/ {
                #rewrite /api/(.+) /$1 break;
                proxy_set_header Host $host;
                proxy_pass http://backend-svc.pm.svc.cluster.local:8000;
            }

            location ~^/api/v1/documents/ {
                #rewrite /api/(.+) /$1 break;
                proxy_set_header Host $host;
                proxy_pass http://backend-filestream-svc.documentations.svc.cluster.local:80;
            }

            # location ~^/(api|admin)/ {
            #     proxy_set_header Host $host;
            #     proxy_pass http://backend-svc.django.svc.cluster.local:80;
            # }
            
            location ~^/workspaces-v2/(.+).js {
                proxy_http_version 1.1;
                proxy_set_header Connection "";
                rewrite /workspaces-v2/(.+) /$1 break;
                proxy_pass http://frontend-svc.workspaces.svc.cluster.local:80;
            }

            location ~^/workspaces-v2/(.+)\.wasm$ {
                proxy_http_version 1.1;
                proxy_set_header Connection "";
                rewrite ^/workspaces-v2/(.+) /$1 break;
                proxy_pass http://frontend-svc.workspaces.svc.cluster.local:80;
            }

            location @index {
                add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
                if_modified_since off;
                expires off;
                try_files /static/index.html =404;
            }
            
            # location ~^/workflows/(.+).js {
            #     rewrite /workflows/(.+) /$1 break;
            #     proxy_pass http://frontend-svc.processing.svc.cluster.local:80;
            # }
            location /service-worker.js {
                try_files /static/$uri @index;
            }

            location / {
                try_files $uri @index;
            }
        }
    }

