본문 바로가기
개발 이야기/Linux

Nginx 다른 사이트로 리다이렉트할 때 request_uri 변조하여 rewrite 하기

by _ppuing 2024. 8. 6.
반응형

회사에서 앱 버튼을 눌렀을 때 웹사이트 A의 웹뷰를 보여주는 기능이 있다. 

웹사이트를 리뉴얼하게 되어 B라는 사이트를 신설했는데, 앱에 웹뷰를 띄울 때 타겟 URL이 A로 제한되어 있었기 때문에 앱 업데이트가 불가피했다. 

 

앱 업데이트를 피하기 위해선 A의 nginx단에서 들어온 요청을 B로 던져주는 것이 필요했다. 

단순히 rewrite만 쓰면 해결되지만, 여기서 문제가 A -> B로 이동할 때 path가 약간 다르다는 점이었다. 

 

즉, 

https://A.com/app/path/

에서 

https://B.com/path/ 

 

처럼 세부 path 가 달라져야 했다. 이럴 때에는 location 안에서 request_uri에 대한 조건문을 활용해볼 수 있다.

location / {  # 어떤 특정 location 하위에서, 
	set $new_request_uri $request_uri; # 우리가 리다이렉트할 세부 path는 new_request_uri 이다. 
    if ($request_uri ~ ^/app/(.*)$) {  # request_uri에 /app/ 이 포함되어 있다면, 
		set $new_request_uri $1;	   # /app/뒤 첫번째 변수를 택한다. 
    }
    rewrite ^ https://B.com/$new_request_uri redirect;
}
반응형

댓글