Nginx 올리기
docker run --name nginx -d -p 80:80 -p 443:443 nginx
접속
docker exec -it nginx /bin/bash
conf 설정 (include 설정 추가)
vi /etc/nginx/nginx.conf
docker pull tomcat:10.1.30-jdk17-temurin-noble
docker run -d -p 8080:8080 --name tomcat-container tomcat:10.1.30-jdk17-temurin-noble
proxy_set_header X-Real-IP $remote_addr;
클라이언트의 실제 IP 주소를 백엔드 서버로 전달
이 설정을 생략하면 백엔드 서버에서 클라이언트의 실제 IP를 알 수 없고, 대신 프록시 서버의 IP 주소만 보이게 되어, 원본 클라이언트의 IP를 추적할 수 없음.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
클라이언트의 IP 주소를 X-Forwarded-For 헤더에 추가
이 헤더를 설정하지 않으면, 백엔드 서버가 요청의 출처 IP를 알 수 없게 되어, 클라이언트의 실제 IP를 파악할 수 없음
proxy_set_header X-Forwarded-Port $server_port;
요청을 받은 서버의 포트 번호를 X-Forwarded-Port 헤더로 전달
이 설정을 하지 않으면, 백엔드 서버에서 요청이 들어온 포트를 알 수 없어서, 요청이 어떤 포트로 들어왔는지 확인할 수 없음.
proxy_set_header X-Forwarded-Proto $scheme;
요청이 HTTPS인지 HTTP인지 구분할 수 있도록 X-Forwarded-Proto 헤더를 전달
이 헤더가 없으면 백엔드 서버는 요청이 HTTP로 전달되었는지 HTTPS로 전달되었는지 알 수 없어서 보안이나 리디렉션 관련 로직에서 문제가 발생할 수 있음
proxy_set_header X-Forwarded-Host $Host;
클라이언트가 요청한 원래의 호스트 이름을 X-Forwarded-Host 헤더로 전달
이 헤더가 없으면, 백엔드 서버가 원래 요청된 호스트 이름을 알 수 없어, 동적 도메인 기반 로직이 제대로 작동하지 않을 수 있음
proxy_set_header Host $http_host;
클라이언트가 요청한 호스트를 Host 헤더로 전달하고 $http_host는 클라이언트의 요청에 포함된 호스트 정보를 나타냄
이 설정을 하지 않으면, 백엔드 서버가 요청에 대한 정확한 호스트를 알 수 없고, 이는 다중 도메인을 사용하는 시스템에서 중요한 정보를 잃게 될 수 있음