From ef47d7082c743d2db5be05a74f8c29fc5d44280f Mon Sep 17 00:00:00 2001 From: bronku Date: Tue, 25 Nov 2025 10:46:37 +0100 Subject: [PATCH] header routing --- java/Dockerfile | 2 +- nginx/html/index.html | 12 +++++++++++ nginx/nginx.conf | 46 ++++++++++++++++++++++++++----------------- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/java/Dockerfile b/java/Dockerfile index 5ad91eb..ec14ffd 100644 --- a/java/Dockerfile +++ b/java/Dockerfile @@ -5,4 +5,4 @@ COPY . . RUN mvn clean package -DskipTests -ENTRYPOINT ["java", "-jar", "target/spring-boot-0.0.1-SNAPSHOT.jar"] \ No newline at end of file +ENTRYPOINT ["java","-Dserver.port=80", "-jar", "target/spring-boot-0.0.1-SNAPSHOT.jar"] diff --git a/nginx/html/index.html b/nginx/html/index.html index ae88ac5..747a347 100644 --- a/nginx/html/index.html +++ b/nginx/html/index.html @@ -1 +1,13 @@ hello from nginx! + + + + diff --git a/nginx/nginx.conf b/nginx/nginx.conf index b2a202a..373671f 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -1,4 +1,4 @@ -events { } +events {} http { upstream dotnet_app { @@ -11,32 +11,42 @@ http { server java-2; } + # Map the header to the chosen upstream + map $http_x_app_type $app_upstream { + dotnet dotnet_app; + java java_app; + default ""; + } + server { listen 80; root /usr/share/nginx/html; index index.html; + # + # 1) If header is present -> route here + # + location @proxy_handler { + proxy_pass http://$app_upstream; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + # + # 2) Default location for all requests + # location / { - try_files $uri $uri/ =404; - } + # If upstream selected -> jump to proxy handler + error_page 418 = @proxy_handler; - location /dotnet/ { - proxy_pass http://dotnet_app; - proxy_http_version 1.1; - 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; - } + if ($app_upstream != "") { + return 418; + } - location /java/ { - proxy_pass http://java_app; - proxy_http_version 1.1; - 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; + # Otherwise serve index.html or static files + try_files $uri $uri/ /index.html; } } }