diff --git a/docker-compose.yml b/docker-compose.yml index 30c7063..cd7563c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,14 @@ services: build: ./dotnet environment: - NAME=Kili + java-1: + build: ./java + environment: + - NAME=FiliJava + java-2: + build: ./java + environment: + - NAME=KiliJava nginx: image: nginx volumes: diff --git a/java/.dockerignore b/java/.dockerignore new file mode 100644 index 0000000..59c34f1 --- /dev/null +++ b/java/.dockerignore @@ -0,0 +1,25 @@ +target/ + +.idea/ +.vscode/ +.settings/ +.classpath +.project + +.git +.gitignore + +tmp/ +*.tmp +*.log + +Dockerfile +Dockerfile.* +docker-compose.yaml +docker-compose.*.yaml + +build/ + +.mvn +mvnw +mvnw.cmd \ No newline at end of file diff --git a/java/Dockerfile b/java/Dockerfile new file mode 100644 index 0000000..5ad91eb --- /dev/null +++ b/java/Dockerfile @@ -0,0 +1,8 @@ +FROM maven:3.9.6-eclipse-temurin-21 + +WORKDIR /app +COPY . . + +RUN mvn clean package -DskipTests + +ENTRYPOINT ["java", "-jar", "target/spring-boot-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/java/src/main/java/java_app/spring_boot/Application.java b/java/src/main/java/java_app/spring_boot/Application.java new file mode 100644 index 0000000..74af8f5 --- /dev/null +++ b/java/src/main/java/java_app/spring_boot/Application.java @@ -0,0 +1,11 @@ +package java_app.spring_boot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} \ No newline at end of file diff --git a/java/src/main/java/java_app/spring_boot/MirrorController.java b/java/src/main/java/java_app/spring_boot/MirrorController.java new file mode 100644 index 0000000..b6e74c5 --- /dev/null +++ b/java/src/main/java/java_app/spring_boot/MirrorController.java @@ -0,0 +1,39 @@ +package java_app.spring_boot; + +import org.springframework.web.bind.annotation.*; +import org.springframework.http.HttpHeaders; +import jakarta.servlet.http.HttpServletRequest; + +@RestController +public class MirrorController { + + private final String serverName = System.getenv().getOrDefault("NAME", "unnamed"); + + @GetMapping(path = "/**") // Obsługuje dowolną ścieżkę + public String mirrorRequest(HttpServletRequest request) { + + String ip = request.getRemoteAddr(); + String method = request.getMethod(); + String scheme = request.getScheme(); + String host = request.getHeader(HttpHeaders.HOST); + String path = request.getRequestURI(); + String queryString = request.getQueryString() != null ? "?" + request.getQueryString() : ""; + + StringBuilder responseText = new StringBuilder(); + + responseText.append("Server Name: ").append(serverName).append("\n"); + responseText.append("IP Address (Remote): ").append(ip).append("\n"); + responseText.append("Method: ").append(method).append("\n"); + responseText.append("Scheme: ").append(scheme).append("\n"); + responseText.append("Host: ").append(host).append("\n"); + responseText.append("Path: ").append(path).append("\n"); + responseText.append("QueryString: ").append(queryString).append("\n"); + responseText.append("Headers:\n"); + + request.getHeaderNames().asIterator().forEachRemaining(headerName -> { + responseText.append(" ").append(headerName).append(": ").append(request.getHeader(headerName)).append("\n"); + }); + + return "
" + responseText.toString() + "
"; + } +} \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf index f7d0eb8..b2a202a 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -6,6 +6,11 @@ http { server dotnet-2; } + upstream java_app { + server java-1; + server java-2; + } + server { listen 80; @@ -24,5 +29,14 @@ http { 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; + } } }