프로그래밍/서버, DBMS
동일한 요청을 여러 서버에 Broadcasting 해주는 NginX mirror
포도알77
2021. 11. 27. 09:34
1. 하나의 요청을 여러 서버가 알아야 할 때
아래의 그림과 같이 한 서버에 요청을 릴레이 하면서 또 다른 서버가 해당 요청을 알아야 할때 사용할 수 있는 mirror 기능이다.
2. NginX conf
location / {
mirror /mirror;
proxy_pass http://location.to;
}
location /mirror {
internal;
proxy_pass http://location.to.mirror;
}
location으로 /mirror을 등록하고, internal 지시어를 통하여 해당 path는 내부적으로만 접근할 수 있게 강제한다. (외부에서 도메인이나 ip타고 들어오는 경우엔 접근할 수 없다는 의미)
그리고 해당 path에 proxy_pass를 설정한 다음 등록을 원하는 location에 mirror로 등록하면 된다.
이렇게 되면 /으로 오는 요청은 항상 location.to, location.to.mirror에 모두 전달되지만, location.to.mirro 응답은 nginx단에서 버려진다. 즉, 웹 서버 본연의 요청-응답 모델에 어떠한 영향 없이 스니핑이 가능한 상태가 된다.
3. 어디다 쓰지?
이미 이 글을 검색해서 들어왔다면 원하는 쓰임새가 있을 것이다. 나의 경우 데이터 전달시 두 서버에 전달하기 위하여 mirror를 활용했다.