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     /etc/letsencrypt/live/admin.egommerce.pbiernat.dev/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/admin.egommerce.pbiernat.dev/privkey.pem;

        server_name admin.egommerce.pbiernat.dev;

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

        error_log /var/log/nginx/admin-egommerce.pbiernat.dev-error.log;
        access_log /var/log/nginx/admin-egommerce.pbiernat.dev-access.log combined;
}

#server {
#        listen 443 ssl;
#        ssl_certificate     /etc/letsencrypt/live/egommerce.pbiernat.dev/fullchain.pem;
#        ssl_certificate_key /etc/letsencrypt/live/egommerce.pbiernat.dev/privkey.pem;
#
#        server_name egommerce.pbiernat.dev;
#
#	# 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.pbiernat.dev-error.log;
#	access_log /var/log/nginx/egommerce.pbiernat.dev-access.log combined;
#}