[AWS] nginx - Header 변경하기

Hyunjun Kim·2025년 5월 20일

실습 - (AWS 환경)

목록 보기
19/61

NGINX에서 header의 내용을 해석할 수 있다. proxy 에게 header 정보를 변경하거나 그대로 보낼 수도, client에게 response로 header를 추가할 수 있다.

바디 - 어플리케이션 해석
헤더 내용을 해석해 여러가지 동작 할 수 있음. 특히 캐시같은 경우 웹브라우저 이용하는 어플리케이션인 경우 캐시같은 것도 컨트롤 할 때 nginx가 캐시하고 있는 것을 캐시에 대한 헤더 정보를 보고서 먼저 응답하거나 그렇게 해서 빨리 서빙하는 그런 기능도 가능하기 때문에 헤더를 해석하는 내용이 필요하다.

proxy로 header 전달하기

console.log(JSON.stringify(req.headers))

이걸 복사해서 아까 만든 server.js 를 수정할 것임.

우선은 지금 돌고 있는 서버를 kill 하고

server.js 를 수정하자.

원래 있던 API콜 했던 로그 밑에다가 강의 자료에 있는 request.headers 를 붙여넣으면 헤더 내용을 다 불러온다. 그리고 json으로 남기겠다. 이렇게 로깅을 추가하자.
그리고 밑에있는 customer API도 마찬가지로 추가해주자.

2번 서버.

두 서버 모두 추가를 해주고
sudo nginx -s reload 후

두 서버 다시 서버를 띄워보자.

nohup node server.js > server.log 2>&1 & echo $! > run.pid
tail -f server.log

로 둘 다 server.log에 잘 들어오는지 확인하자.


nginx가 있는 1번 서버에서

/etc/nginx/conf.d 에서
sudo vi header.conf 만들자

server {
	listen 8086;
	server_name headerserver;

	location /user {
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_pass http://13.125.255.35:9000;
	}

	location /customer {
		proxy_set_header X-CUSTOM custom;
		proxy_pass http://13.209.4.45:9000;
	}
}

location /user 라는 API 받으면 proxy_set_header 한 다음에
Host - 이게 key고, 그 뒤에가 value 다. $host (예약변수)

그 다음은 클라이언트한테 받은 그 host 정보.
$remote_addr; 이거는 클라이언트 요청한 그 IP주소, 클라이언트의 IP주소가 된다.
proxy_pass 1번 서버 IP:9000;

location customer API에 대해선 마음대로 key-value를 정해주자. proxy_pass 를 2번 서버로 설정해주자.


그 다음
sudo nginx -s reload 로 적용해주자.

다시 클라이언트로 돌아가서

curl -XGET http://$server1:8086/user

8086의 user를 요청해보자.

1번 서버에서는 API call 됐다는 요청이 1번 서버에 왔고
헤더정보 전부를 json으로 남기라고 했는데, x-realip 에 보면 59.15.182.213 이런 IP가 적혀있고
user-agent 정보, host 정보가 잘 나와있다. 이 호스트는 자기 자신에 대한 정보.

API call /user at 2:37:14
{"host":"13.125.12.34","x-realip":"59.15.182.213","connection":"close","user-agent":"curl/8.4.0","accept":"*/*"}

웹사이트 에 들어가면 내 public IP 확인할 수 있다.

curl -XGET http://$server1:8086/customer

를 요청하면

이렇게 2번 서버로 잘 들어가는 것도 확인할 수 있고
아까 임의로 넣어 놓은 "x-custom":"custom" 의 key- value 값이 잘 전달된 것을 확인 할 수 있다.

이렇게 proxy 로 header 전달하는 것 해 봤고


요청한 클라이언트한테 응답하는 헤더를 추가해보자.

sudo vi header.conf

띄어쓰기를 기준으로X-MYHEADER LEON 은 Key, value다.

sudo nginx -s reload

리로드 하고 다시 클라이언트로 넘어가서
API 요청을 해보자

이번 요청은

curl -v

를 사용해서 상세 로그를 남길 것이다.

이렇게 하면 실제로 리스폰스 바디 뿐 아니라 헤더 정보가 남는데 리스폰스 헤더 보면
X-MYHEADER: LEON 이게 추가되어서 들어온 것을 확인할 수 있다.


동시에 남은 로그를 보면 proxy에는 전달이 되지 않았다.
받은 응답에만 X-MYHEADER 키가 추가 되었다.

profile
Data Analytics Engineer 가 되

0개의 댓글