upstream v-configuration {
   least_conn;
   server <Your Master Server IP>:23000;
}

upstream v-apiserver {
   least_conn;
   server <Your Master Server IP>:8090;
}

upstream v-surveillance {
   least_conn;
   server <Your Master Server IP>:8041;
}

upstream userportal {
   least_conn;
   server <Your Master Server IP>:3010;
}

upstream v-notificationserver {
   least_conn;
   server 10.2.0.7:8079;
}

upstream v-partnerportal {
   least_conn;
   server <Your Master Server IP>:3020;
}

upstream v-remoteeventserver {
	ip_hash;
	server <Your Messaging Server IP>:15675;
}

map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   # return 301 https://$host$request_uri;

   location /v-apiserver/ {
      proxy_pass http://v-apiserver;
   }

   location /vsaas {
      proxy_pass http://v-surveillance;
   }

   location / {
      proxy_pass http://userportal/;
   }

   location /v-notificationserver {
      proxy_pass http://v-notificationserver;
   }

   location ~ /(.+)/v2/stream/(.*)$ {
      proxy_pass http://$1/v2/stream/$2;
   }

   location ~ /(.+)/live/(.*)$ {
      proxy_pass http://$1/live/$2;
   }

   location /ws {
      proxy_pass http://v-remoteeventserver;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_connect_timeout 1s;
      proxy_set_header Host $host;
	}

}


server {
   # SSL configuration

   listen 443 ssl;
   listen [::]:443 ssl;
  
   http2 on;

   ssl_certificate		/etc/nginx/ssl/soterixcloud.crt;
   ssl_certificate_key	/etc/nginx/ssl/soterixcloud.key;

   #ssl_certificate		/etc/nginx/ssl/videonetics.cer;
   #ssl_certificate_key	/etc/nginx/ssl/videonetics.key;
   
   ssl_session_timeout 10m;
   ssl_session_cache shared:SSL:10m;
   ssl_session_tickets off;

   # TLS 1.3 only
   ssl_protocols TLSv1.3;
   #ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
   ssl_prefer_server_ciphers on;

   # OCSP stapling
   ssl_stapling off;
   ssl_stapling_verify off;

   # verify chain of trust of OCSP response using Root CA and Intermediate certs
   # ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem;

   client_max_body_size	200M;


   location /v-apiserver/ {
      proxy_pass http://v-apiserver;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }

   location /vsaas {
      proxy_pass http://v-surveillance;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }

   location / {
      proxy_pass http://userportal/;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }
   
   location /v-configuration/ {
      proxy_pass http://v-configuration/;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }
   
   location /v-notificationserver {
      proxy_pass http://v-notificationserver;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }

   location ~ /(.+)/v2/stream/(.*)$ {
      proxy_pass http://$1/v2/stream/$2;

      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;
   }

   location ~ /(.+)/live/(.*)$ {
      proxy_pass http://$1/live/$2;
   }

   location /ws {
      proxy_pass http://v-remoteeventserver;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_connect_timeout 1s;
      proxy_set_header Host $host;
      proxy_ssl_certificate /etc/nginx/ssl/videonetics.cer;
      proxy_ssl_certificate_key /etc/nginx/ssl/videonetics.key;
	}
}

server {
   listen 3010 default_server;
   listen [::]:3010 default_server ipv6only=on;
   

   
   location / {
      proxy_pass http://v-configuration/;
   }
 
}

server {
   # SSL configuration

   listen 443 ssl;
   listen [::]:443 ssl;

   server_name partner-staging.soterixcloud.com;
  
   http2 on;

   ssl_certificate		/etc/nginx/ssl/soterixcloud.crt;
   ssl_certificate_key	/etc/nginx/ssl/soterixcloud.key;
   
   ssl_session_timeout 1d;
   ssl_session_cache shared:SharedNixCraftSSL:10m; 
   ssl_session_tickets off;


   # TLS 1.3 only
   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_prefer_server_ciphers off;

   # OCSP stapling
   ssl_stapling off;
   ssl_stapling_verify off;

   # verify chain of trust of OCSP response using Root CA and Intermediate certs
   # ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem;

   client_max_body_size	200M;




   
   location / {
      proxy_pass http://v-partnerportal/;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }
   
   location /v-apiserver/ {
      proxy_pass http://v-apiserver;

      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;    
      proxy_set_header X-Forwarded-Server $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;

      # enables WS support
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_send_timeout          600;
      proxy_read_timeout          600;
      send_timeout                600;
   }
   
   
}

