
Nginx 서버에서 proxy_set_header를 사용하여 헤더를 전달할 때, 브라우저에 전송되는 헤더가 바뀌는 방식은 다음과 같습니다.
1. proxy_set_header : Nginx 서버에서 proxy_pass로 전달되는 요청에 헤더를 추가하거나 수정하는 명령입니다.
2. $host : 클라이언트가 요청한 서버의 호스트 이름을 의미합니다.
3. $remote_addr : 클라이언트의 IP 주소를 의미합니다.
예를 들어, proxy_set_header Host $host; 명령을 사용하면, Nginx 서버에서 proxy_pass로 전달되는 요청에 Host 헤더를 추가합니다. 이 헤더의 값은 클라이언트가 요청한 서버의 호스트 이름이 됩니다.
다음과 같은 예를 살펴보겠습니다.
#hostingforum.kr
nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
이 설정에서, 클라이언트가 example.com에 요청을 하면, Nginx 서버는 요청을 localhost:8080으로 전달합니다. 이 때, Host 헤더는 example.com으로 추가됩니다.
브라우저에 전송되는 헤더는 다음과 같습니다.
* Host: example.com
* X-Real-IP: 클라이언트의 IP 주소
* X-Forwarded-For: 클라이언트의 IP 주소
여기서 주의할 점은, proxy_set_header로 지정한 헤더가 다른 헤더와 어떻게 합쳐지거나 덮어써지는지에 대한 것입니다.
* 덮어쓰기 : proxy_set_header로 지정한 헤더가 이미 존재하는 헤더를 덮어써집니다. 예를 들어, Host 헤더가 이미 존재하는 경우, proxy_set_header Host $host; 명령으로 Host 헤더를 덮어써집니다.
* 합쳐지기 : proxy_set_header로 지정한 헤더가 이미 존재하는 헤더와 합쳐집니다. 예를 들어, X-Forwarded-For 헤더가 이미 존재하는 경우, proxy_set_header X-Forwarded-For $remote_addr; 명령으로 X-Forwarded-For 헤더에 클라이언트의 IP 주소를 추가합니다.
따라서, proxy_set_header를 사용할 때는 주의하여 헤더를 추가하거나 수정해야 합니다.
2025-05-03 04:26