프록시 서버

민성재·2022년 5월 16일
0

CORS 에러 관련 팁



회사에서 개발중에 프론트에서 ajax로 나이스 페이먼츠에 API 요청을 했는데 CORS 에러 발생..


이전에 제가 발표한 CORS에러와 해결책은 백엔드에서 Allow 설정을 열어주는 것, 프록시 서버를 구축하여 우회하는 것이었는데
실제로 프록시 서버를 구축하는 것은 무리였고, 나이스 페이먼츠 쪽에 로컬 주소를 뚫어달라고 요청하기도 좀 애매했음
프론트에서 ajax로 쏠때 값이 잘오는지만 체크해보면 되는데 참 난감했음 구글링을 해보니 크롬의 경우는 보안관련 옵션을 끈 채로 실행이 가능했음

  1. cmd 창을 열고 Chrome.exe가 있는 폴더로 이동한다.

  1. chrome.exe --disable-web-security --user-data-dir=C:\Temp 를 실행

  2. 자동으로 크롬이 실행되는데, 안정성과 보안에 문제가 발생한다는 문구가 뜬다면 ok



    이상태에서는 CORS 에러가 발생하지 않아서 프론트 개발자들이 ajax 테스트해보기에 간단해서 참고할만 하다고 생각함


프록시 서버란?

프록시(Proxy)란 '대리'라는 의미로 보통 보안상의 이유로 직접 통신할 수 없는 두 점 사이에 중계기로서 대리 통신을 수행하는 기능을 프록시 , 그러한 기능을 하는 서버를 프록시 서버라고 합니다.

프록시 서버를 사용하게 되면 갖게되는 장점

  1. 캐시 방식으로 미리 저장하여 전송시간 절약이 가능하며

  2. 불필요한 외부와의 연결을 방지

  3. 트래픽 감소로 인한 네트워크 병목 현상 방지

  4. 보안( IP보안, 접속 우회)

그리고 접속우회의 경우는 한국에서 접속이 제한되는 사이트는 IP를 검사하여 한국에서의 접속임이 감지되기 때문인데, 프록시 서버를 경유하여 다른나라에서 접속한 것처럼 속일 수 있습니다.
'인터넷 옵션 -> 연결 -> LAN 설정 -> 프록시 서버' 에서 서버 주소와 포트를 설정해주면
설정한 서버에서 접속한 것처럼 속일 수 있습니다.


프록시의 종류

1. Forward Proxy

일반적인 프록시 방식으로, 클라이언트가 www.naver.com에 접근하려고 하면, 포워드 프록시 서버가 대신 요청을 받아서 www.naver.com 에 forword 해줍니다. 즉, 요청받는 서버(네이버)는 포워드 프록시 서버를 통해 요청을 받기 때문에 클라이언트의 정보를 알 수 없습니다.

2. Reverse Proxy

클라이언트가 어떤 기업 사이트에 데이터를 요청하면, 리버스 프록시 서버가 이 요청을 받아, 기업 내부망 서버에서 데이터를 받은 후에 클라이언트에게 전달합니다.
클라이언트는 내부 서버에 대한 정보를 알 필요 없이 리버스 프록시 서버에만 요청하면 됩니다.

포워드 프록시 방식과의 차이점은
포워드 프록시는 클라이언트가 직접 해당 사이트에 요청을 보낸다면,


리버스 프록시는 클라이언트는 해당 사이트에 직접 요청을 보내지않고 리버스 프록시서버에만 요청을 보내면 된다는 것입니다.

보통 기업은 외부망 , 내부망 사이에 DMZ(Demilitarize Zone)이라는 망이 존재합니다.

DMZ 망에는 외부망으로 서비스를 제공해야하는 Mail, SMS , Web서버를 배치하고 내부망에 WAS를 배치합니다. (WAS는 DBMS와 직접적으로 연결되어 있기 때문)




따라서 DMZ망에 웹서버를 두고 리버스 프록시로 설정하면, 웹서버가 해킹당해도 WAS는 안전하기에 보안이 좀 더 좋아집니다.



이 리버스 프록시에 CDN을 연동하면 디도스 공격도 효과적으로 방어하며, 빠르고 안정적인 서비스 제공이 가능하다고 합니다. 상황에 맞게 리버스 프록시 앞에 L4 스위치나 로드밸런서를 붙이면 분배 알고리즘을 통해 서비스 신뢰성도 높일 수 있습니다.

profile
민성재 개발 블로그

0개의 댓글