2024 07 09
2024-07-09¶
Nginx proxy_pass DNS 문제¶
문제상황¶
- proxy_pass로 https://domain.com 을 매핑하였음
- https://domain.com 의 A record를 변경하였음
- 변경된 IP로 요청이 넘어가는 줄 알았으나, nginx는 하염없이 도메인에 이전에 매핑된 IP로 요청을 보냄
원인 파악¶
참고: https://tech.kkung.net/blog/nginx-with-elb/
참고: https://community.f5.com/discussions/technicalforum/does-nginx-1-20-or-newer-re-resolve-dns-for-proxy-pass/303654
참고: https://circlee7.medium.com/nginx-proxy-pass-%EC%9D%98-aws-elb-%EC%97%B0%EA%B2%B0-%EC%84%A4%EC%A0%95-f0c4b792ef71
참고: https://community.f5.com/discussions/technicalforum/does-nginx-1-20-or-newer-re-resolve-dns-for-proxy-pass/303654
- Nginx를 Reverse Proxy로 사용시에 주의할 점
- 글 예시에서는 AWS ELB를 엔드포인트로 proxy_pass
- ELB의 IP는 변경될 수 있음 + 복수의 IP로 제공
proxy_pass를 직접 지정함으로써 Nginx는 설정파일을 읽는 시점에 DNS에 대한 IP 변환을 수행한다. (resolve)
- 글 예시에서는 AWS ELB를 엔드포인트로 proxy_pass
참고: https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
- Nginx가 proxy_pass를 읽는 법
- 만약, 해당 도메인이 여러개의 Ip를 반환한다면 서버 그룹으로 묶어 라운드 로빈 방식으로 처리
- proxy_pass에서 domain_name으로 특정된다면...
- 서버 그룹에서 찾고
- 없으면 리졸버에서 찾음
해결 방법¶
참고: https://betterstack.com/community/questions/how-to-force-nginx-to-resolve-dns-every-proxy-pass/
- 도메인의 A record 변경 후 nginx reload를 통한 재시작 (자주 IP가 변경되지 않는다면 이 방법으로 해결)
- resolver와 set을 통해 nginx 설정