1. 개요
nginx에서 application으로 요청을 전달할때, 접근하는 client ip를 확인해야 하는 경우가 있다.
내 경우 특정 프로그램에서 실제 접근하는 IP 주소를 확인해야 하는 경우와, 정기점검 시 외부 사용자들은 점검페이지로 접근되도록 접속하는 IP를 구별하는 용도로 사용하였다.
정기점검 전환 proxy 구성에 대해서는 추후에 자세히 설명하겠다.
이에 nginx에서 접근하는 ip를 확인하는 방법에 대해 설명해보겠다.
2. proxy_set_header
nginx location 하위 블록에 proxy_set_header을 통해 여러 header를 세팅할 수 있다.
https://nginx.org/en/docs/http/ngx_http_proxy_module.html
proxy_set_header는 nginx가 클라이언트의 요청을 전달하면서 헤더를 수정할때 사용한다.
주로 사용하는 헤더는 다음과 같다.
- X-Forwoarded-For: 현재까지 거쳐온 서버의 IP에 대한 정보
- X-Forwarded-Proto: 클라이언트 요청 프로토콜
- X-Real-IP: 클라이언트 IP
- Host: 서버의 도메인 네임
예시)
# 경유하는 모든 ip 가져오기
proxy_set_header X-Forwarded-For $remote_addr;
# client ip만 가져오기
proxy_set_header X-Real-IP $remote_addr;
# 호스트 이름 가져오기
proxy_set_header Host $host;
'DevOps > open source_오픈소스' 카테고리의 다른 글
[NGINX] nginx reverse proxy (0) | 2024.09.09 |
---|---|
[NGINX] 기본 구성과 Configuration (0) | 2024.09.09 |
[Redmine] 프로젝트 관리 오픈소스, 레드마인 (1) | 2023.11.30 |