[Openresty] x-forwarded-for 설정하기
2022. 9. 30. 10:50
엔지니어링/프록시
x-forwarded-for 는 백엔드서버가 접근하는데 클라이언트의 ip를 체크하기 위해서 사용한다. 다양한 네트워크 구간이 존재하기 때문에 proxy 서버에서 x-forwarded-for 설정이 없다면 백엔드서버의 바로 앞단에 있던 proxy 서버의 ip를 가지고 있는다. 테스트 환경 openresty 서버를 2개를 두어 proxy pass 시 x-forwarded-for ip를 로그로 찍으며 테스트한 걸 기록하려한다. 테스트 VM Public IP Private IP 호출서버 223.130.162.121 proxy 1번 175.45.193.85 10.160.227.8 proxy 2번 175.106.97.177 10.160.227.9 시나리오는 아래와 같다. 1. 호출서버에서 proxy 1번 호출(ht..
[Openresty] 프록시서버 설치하기
2022. 9. 30. 10:13
엔지니어링/프록시
이번에 테스트 환경을 구축하다가 openresty 설치를 했는데, 1년전에 했던거라 기억이 가물가물 해져서 기록한다..ㅋ 설치환경은 우분투에서 진행했다.(나머지도 거의 동일함 레포 명령어차이) 필수 라이브러리 설치 $ apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make -y openresty 설치 openresty 파일 다운로드 openresty 사이트에 방문하여 설치 url을 복사한 뒤 wget으로 다운하자. OpenResty - Download Ylang: Universal Language for eBPF, Stap+, GDB, and More (Part 3) openresty.org 현재 가장 최신버전은 ..
[Openresty] 특정 클라이언트 구분하기
2022. 9. 28. 15:21
엔지니어링/프록시
이번에 특정 클라이언트의 요청을 타 도메인을 꺾는 테스트가 필요하여 진행한 내용을 정리한다. 환경은 3scale를 사용하기때문에 staging/product 2개의 도메인이 존재한다. 그래서 특정 클라이언트 1.1.1.1 ip가 들어오면 staging도메인으로 강제로 꺾어주는 테스트를 진행한다. 네트워크 구간은 대충 아래와 같다. [데이터요청서버] -> [아웃바운드프록시] -> [L7 Layer] -> [L4 Layer] -> [인바운드프록시] -> [3scale] -> [백엔드서버] proxy 구간이 존재하기 때문에 remote_ip 가 아닌 x-forwarded-for 를 사용해 클라이언트의 ip를 체크해야한다. (remote_ip 는 바로 전 라우터의 ip가 나오기 때문) nginx.conf 설정 ..
[Openresty] 특정 대상 경로 우회
2022. 8. 4. 14:00
엔지니어링/프록시
예전 프로젝트에서 L4 스위치가 2중화 되어있는 proxy서버(openresty)에 health 체크를 하는데 openresty에서 tcp/ip 소켓 통신인 경우 헬스체크를 소켓통신하는 곳까지 넘겨버리는 불상사가 생겼었다. L4 ---> proxy ---> server ..ㅋ 해당 서버는 인증업체였는데 이로인해 트래픽이 많아져 문제가 생길 것 같다고 하여 openresty 에서 수정하기로 했다. upstream auth1 { server x.x.x.x:xx; } upstream no_backend { server 127.0.0.1:80; } # L4 ip에서 온 것은 no_backend 로 이동 map $remote_addr:$server_port $org { L4IP:접속포트1 no_backend; L..
[Nginx] 쿠버네티스 망분리 proxy 서버 구축
2022. 8. 3. 15:59
엔지니어링/프록시
지난 포스팅에 쿠버네티스 ingress 를 올려서 내부 nginx service에 접근하는 것을 했다. 아키텍처 필자가 생각하고 있는 것은 위 아키텍처와 같다.(다음포스팅은 로드밸런서 등록) 쿠버네티스 노드는 private network ip 만을 가지고 프라이빗 통신을 하고, proxy server 는 외부망에서 들어온 요청을 private network 망에 있는 쿠버네티스에 전달한다. 편의상(귀찮아서) proxy server 가 될 곳에는 NFS서버, Rancher 도 있다.ㅋㅋㅋ Public IP 제거 먼저 kube vm 에 있는 public ip를 모두 제거했다. 위 사진처럼 쿠버네티스 vm 들은 public ip 가 모두 제거된 상태! nginx 설치 $ apt-get install nginx..