Nginx를 사용하면서 패턴에 매치하는 Request를 Proxy pass로 전달 할 때 쿼리 파라미터가 포함되지 않아 어플리케이션 레벨의 문제인 것으로 생각하고 한참을 고생했다. 여기서 쿼리 파라미터는 아래 예로 든 주소에서 물음표(?) 뒤에 오는 키-값들을 의미한다.
https://yongho1037.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F
문제가 되었던 nginx 설정은 다음과 같다.
location ~ /(api|login|auth)/(.*)$ {
proxy_pass http://backend/$1/$2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
위 설정은 URL Path에 api, login, auth가 포함되어 있으면 backed 서버로 proxy pass 하고자 하는 설정이었다. 이 때 괄호안의 정규 표현식을 사용한 부분을 추출하여 $1,$2와 같이 인자 값으로 참조할 수가 있는데 이 때 (.*)&로 하면 쿼리 파라미터까지 포함되는 것으로 생각했었다. 하지만 이 경우에는 Path에 해당하는 부분까지만 포함이 되고, 쿼리 파라미터 부분은 아래와 같이 ${args}를 추가하여 설정해야 한다.
location ~ /(api|login|auth)/(.*)$ {
proxy_pass http://backend/$1/$2?${args};
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
'Work > 개발 노트' 카테고리의 다른 글
[k8s] ALB Ingress 사용 시 다수의 리스너 등록하기 (1) | 2020.10.15 |
---|---|
[Docker] Secret 사용 해보기 (0) | 2020.10.04 |
[k8s] Image Pull 실행 시 ECR 로그인 적용하기 (0) | 2020.09.26 |
[Go언어] embedded struct bson marshaling 시 struct 이름으로 키가 생성되는 문제 (0) | 2020.09.18 |
[Go언어] tcp로 웹 서버 구동시 tcp6로 Listen (0) | 2020.09.14 |
댓글