header routing

This commit is contained in:
bronku 2025-11-25 10:46:37 +01:00
parent 005ec377d8
commit ef47d7082c
3 changed files with 41 additions and 19 deletions

View file

@ -5,4 +5,4 @@ COPY . .
RUN mvn clean package -DskipTests RUN mvn clean package -DskipTests
ENTRYPOINT ["java", "-jar", "target/spring-boot-0.0.1-SNAPSHOT.jar"] ENTRYPOINT ["java","-Dserver.port=80", "-jar", "target/spring-boot-0.0.1-SNAPSHOT.jar"]

View file

@ -1 +1,13 @@
hello from nginx! hello from nginx!
<button onclick="goToApp('java')">Go to Java</button>
<button onclick="goToApp('dotnet')">Go to .NET</button>
<script>
function goToApp(appName) {
fetch("/", {
headers: { "X-App-Type": appName },
})
.then((r) => r.text())
.then((t) => (document.body.innerHTML = t));
}
</script>

View file

@ -1,4 +1,4 @@
events { } events {}
http { http {
upstream dotnet_app { upstream dotnet_app {
@ -11,32 +11,42 @@ http {
server java-2; 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 { server {
listen 80; listen 80;
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.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 / { location / {
try_files $uri $uri/ =404; # If upstream selected -> jump to proxy handler
error_page 418 = @proxy_handler;
if ($app_upstream != "") {
return 418;
} }
location /dotnet/ { # Otherwise serve index.html or static files
proxy_pass http://dotnet_app; try_files $uri $uri/ /index.html;
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;
}
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;
} }
} }
} }