엔진엑스 트래픽 미러링
엔진엑스(Nginx)의 ngx_http_mirror_module
모듈을 사용하면 리버스 프록시로 애플리케이션에 전달하는 일부 트래픽을 복제하여 다른 애플리케이션으로 전달할 수 있다. 우리는 이것을 활용해서 애플리케이션에 전달하는 트래픽을 알 수 없는 상황이지만 어떠한 문제가 발생하고 있을때 테스트를 위한 애플리케이션을 만들어서 구동하고 디버그할 수 있는 환경을 만들 수 있다.
트래픽 미러링 설정
http {
upstream backend_for_test {
server app:8081;
keepalive 128;
}
server {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# hop-by-hop
proxy_http_version 1.1;
location /mtls/ {
proxy_pass http://backend;
mirror /mirror;
mirror_request_body on;
}
location /mtls_mirror {
internal;
proxy_pass http://backend_for_test$request_uri;
}
}
}
문제에 대한 원인을 파악하기 위한 요청에 바디 정보가 필요하지 않은 경우 mirror_request_body 옵션을 비활성화(off) 하세요.
트래픽 미러링 출력
일반적으로 서버 포트 오픈을 확인하는데 사용하는 Netcat 명령어를 통해 간단한 서버를 실행하고 복제된 트래픽에 대한 정보를 출력해볼 수 있다.
nc -lp localhost 8081
AWS 환경에서 운영하는 애플리케이션에 대한 트래픽 미러링은 VPC 트래픽 미러링을 구성하는 것이 적합합니다.