upstream egommerce-api-gw {
        server 127.0.0.1:48443;
}

upstream egommerce-api-gw-dashboard {
	server 127.0.0.1:48444;
}

upstream egommerce-api-registry-ui {
        server 127.0.0.1:48445;
}

upstream egommerce-api-eventbus-mngmt {
        server 127.0.0.1:48446;
}

server {
        listen 443 ssl;
        ssl_certificate     /home/keedosn/workspace/golang/src/git.ego.cloudns.be/egommerce/stack/deploy/certs/api-gateway/localhost.cert;
        ssl_certificate_key /home/keedosn/workspace/golang/src/git.ego.cloudns.be/egommerce/stack/deploy/certs/api-gateway/localhost.key;

        server_name egommerce.local;

	# Traefik redirects
        location /dashboard {
                if ($http_referer ~ (/gateway)) {
                        proxy_pass http://egommerce-api-gw-dashboard;
                }
        }
        location /api {
                if ($http_referer ~ (/gateway)) {
                        proxy_pass http://egommerce-api-gw-dashboard;
                }
        }

        location /gateway/ {
                proxy_pass                         http://egommerce-api-gw-dashboard/dashboard/;
                proxy_pass_header                  Server;
                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;
                client_max_body_size 0;
        }

	# Consul redirects
        location /ui {
                if ($http_referer ~ (/registry)) {
                    proxy_pass http://egommerce-api-registry-ui;
                }
        }

        location /v1 {
                if ($http_referer ~ (/registry)) {
                    proxy_pass http://egommerce-api-registry-ui;
                }
        }

        location /registry {
                proxy_pass                         http://egommerce-api-registry-ui;
                proxy_pass_header                  Server;
                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;
                client_max_body_size 0;
        }


        # RabbitMQ Mngmt redirects
        location /eventbus {
                return 302 /eventbus/;
        }
        location ~* /eventbus/api/(.*?)/(.*) {
                proxy_pass http://egommerce-api-eventbus-mngmt/api/$1/%2F/$2?$query_string;
                proxy_buffering                    off;
                proxy_pass_header                  Server;
                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;
        }
        location ~* /eventbus/(.*) {
                rewrite ^/eventbus/(.*)$ /$1 break;
                proxy_pass http://egommerce-api-eventbus-mngmt;
                proxy_buffering                    off;
                proxy_pass_header                  Server;
                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;
        }

        # Pass all requests to the API Gateway
        location / {
                proxy_pass https://egommerce-api-gw;
                proxy_http_version                 1.1;
                proxy_pass_header                  Server;
                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;
                client_max_body_size 0;
        }

        error_log /var/log/nginx/egommerce.local-error.log;
        access_log /var/log/nginx/egommerce.local-access.log combined;
}

