
proxy_set_header 명령어는 HTTP 요청 헤더를 수정하는 데 사용됩니다. 하지만, 이 명령어는 요청 헤더를 수정하는 것이 아니라, 프록시 서버가 원본 서버에 전달하는 헤더를 수정하는 것입니다.
예를 들어, proxy_set_header X-Real-IP $remote_addr; 명령어는 원본 클라이언트의 IP 주소를 X-Real-IP 헤더에 전달하려고 하지만, 실제로는 Nginx 서버의 IP 주소가 전달되는 이유는 다음과 같습니다.
- Nginx 서버는 원본 클라이언트의 IP 주소를 $remote_addr 변수에 저장합니다.
- 그러나, proxy_set_header 명령어는 Nginx 서버가 원본 서버에 전달하는 헤더를 수정하므로, 원본 서버는 Nginx 서버의 IP 주소를 받게 됩니다.
원본 클라이언트의 IP 주소를 원본 서버에 전달하려면, Nginx 서버가 원본 클라이언트의 IP 주소를 저장하는 변수를 사용해야 합니다. 예를 들어, $proxy_add_x_forwarded_for 변수를 사용할 수 있습니다.
다음과 같은 코드를 사용할 수 있습니다.
bash
http {
...
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://원본서버IP:원본서버포트;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
이 코드에서는 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 명령어를 사용하여 원본 클라이언트의 IP 주소를 X-Forwarded-For 헤더에 전달합니다.
2025-06-21 08:02