• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
정보

역방향 Reverse Proxy 작동하는 방법

달소 달소 5890

3

26

안녕하세요. 달소입니다.

 

이번글은 홈서버에서 가장 유용하게 사용할수 있는 팁이자 이해만하신다면 정말 쉽게 사용할 수 있는방법입니다.

 

보통 우리가 사용하는 환경은 도메인을 직접 구매하거나 공유기의 DDNS를 사용하는것이라고 생각합니다.

이렇게 공인 IP를 도메인에 할당하게 되면 해당 도메인으로 접근하면 내부의 서버에 포트포워딩/DMZ 설정을 사용해서 내부로 요청을 보내게 되는데요.

 

Reverseproxy를 사용하지않는환경이라면 포트를 통해 내부 서비가 분기되며 서비스당 포트 1개씩을 사용하게됩니다.

이렇게되면 실제로 사용하는 포트도 많아질뿐더러 여러 서버를 운영할 경우 관리하기가 매우 복잡해집니다.(인증서 등등)

 

ReverseProxy를 사용하면 이러한 문제점을 쉽게 해결할 수 있게됩니다.

 

Reverse Proxy란?

 

역방향 프록시로 일반적인 내부에서 외부로 나갈때의 프록시 서버의 반대로 외부에서 내부로 서버의 요청이 왔을때 처리해주는 서버를 의미합니다.

image.png.jpg

여기서는 NPM이라고 적었지만 ReverseProxy의 역할을 하는건 매우다양합니다.
일반적인 Nginx, Swag, NPM, 기타 여러가지 리버스프록시 플랫폼이있습니다.

 

아래그림처럼 사용자가 도메인에대한 요청을 도메인(ip)에 보내게 되면 80/443으로 포트포워딩 된 NPM 서버에서 해당 요청을 확인하고 알맞는 내부서버로 전달해줘 요청을 처리하게됩니다.

image.png.jpg

 

위 사진을 간단하게 설명해드리자면
외부의 도메인은 NPM(Reverse Proxy) 서버의 80/443으로 포트포워딩 되어있는 상태입니다.

그리고 NPM에서 여러가지 도메인에 대한 설정을 진행해줍니다.

 

Source는 도메인 주소를 의미하면 Destination은 내부의 서버로 의미합니다.
내부에서 요청을 처리하는건 Reverse Proxy 서버 한대이기때문에 https를 사용하기 위한 인증서 관리도 매우 편리합니다.

 

image.png.jpg

 

이게 사실.. 쉽다면 쉽고 어렵다면 어렵습니다만..

구조상으로는 크게 어려운점이없다고생각합니다. 물론 에전에 nginx에서 conf하나씩 수정할때는 꽤나 어려웠지만요..
NPM을 한번 사용해보시고 헤놀로지에서의 응용프로그램의 도메인을 아래처럼 설정해주신다면

요청에 대해서 알아서 domain을 인식하고 넘겨주기때문에 destination에서는 ip:443으로 적어주시면 충분합니다.

 

image.png.jpg

 

https://svrforum.com/svr/32300

  안녕하세요. 달소입니다.   오늘도 새로운 정보를 하나 주워왔습니다 ㅋㅋ.. 오늘 라우터가 도착하기로해서 리버스프록시 셋팅을 바꾸려고 이...
달소 | 2021.04.28

 

https://svrforum.com/svr/136502

  안녕하세요. 달소입니다.   오늘은 예~~전에 쓰다말았던 Nginx Proxy Manager , NPM을 사용하는 방법입니다. 앞선단계에...
달소 | 2022.01.12

 

 

https://svrforum.com/262513

안녕하세요. 달소입니다. 오랜만에 NPM에 관한 정보글을 올려봅니다. 기존에 제가 사용하고있는 aapanel에서도 인증서나 프록시쪽을 지원해줬지만 추후에 서버마이그레이션...
달소 | 2022.04.18

 

신고공유스크랩
26
profile image 1등
쪼꼬모카라떼 2022.05.06. 14:33

감사합니다. 이 글 보기전에

nginx에서 proxy_pass directive를 이용해서 테스트 해 보았습니다.

어떤 사이트는 되고 어떤 사이트는 안되네요

plex나 jellyfin flame 서버로 pass 시키면 걍 휜 화면만 나오고요

guacamole, dsm은 정상적으로 되네요

profile image
달소 글쓴이 2022.05.06. 14:36
쪼꼬모카라떼

흠.. 제가 plex,flame을 사용했었는데 문제없었습니다 한번 NPM으로 설정해보시겠어요?

profile image
쪼꼬모카라떼 2022.05.06. 14:40
달소

네 이글 정독하고 NPM으로 해볼께요.

이게 굉징히 편리한 기능이군요

공유기 port mapping이 30개 까지라 풀로 차서 어쩌나 싶었는데

공유기에서 NPM용 포트 하나만 열어주면 NPM이 알아서 해주는거 맞죠?

profile image
달소 글쓴이 2022.05.06. 14:42
쪼꼬모카라떼

네 맞습니다 인증서관리도 엄청 편합니다 ㅎㅎ

외부에 80/443만 오픈하면되니 보안적으로도 좋구요

profile image
쪼꼬모카라떼 2022.05.07. 01:34
달소

무료 사용중인 3개의 host이름을 npm에 등록해서 flame, dsm, web 테스트 했는데

잘되네요 도메인 구매후 본격적으로 설정해 봐야겠습니다.

서버 ip주소 포트번호 햇갈려서 excel로 작성 해 보곤 했는데

cname으로 host명 작명해서 사용하면 햇갈릴일 없겠네요.

nginx에서 location만 죽도록 뜯거 고치다 포기 했는데 신세계네요.

달소교를 믿는자 편하리라.

profile image
달소 글쓴이 2022.05.07. 10:22
쪼꼬모카라떼

ㅎㅎ 저도 npm쓰기전에 여러시행착오를 겪었습니다,,

마음에드신다니 다행입니다ㅎ

profile image 2등
쪼꼬모카라떼 2022.05.06. 14:38

궁금한게 하나 더 있습니다.

도메인명이 aa.ddns.net이라 할때

web에서 aa.ddns.net이라 치면 ISP 네임서버로 가지 않나요?

NPM에 전달되기전에 내가 만든 도메인명이 네임서버에서는 모를텐데 어떻게 구현되는지 궁금했습니다.

위 궁금증이 reverse proxy를 이해 못한 첫번째 이유입니다.

profile image
달소 글쓴이 2022.05.06. 14:41
쪼꼬모카라떼

아... 내용에 하나더 추가해야겠군요 ㅎㅎ..

 

도메인은 반드시 사용하고계신 도메인에 CNAME이나 A 레코드로 ns에 등록하셔야합니다 ㅠㅠ

당연히 DDNS를 사용하신다면 도메인을 사용하신다는 가정하에 DNS 설정창에서 A/CNAME 레코드를 등록한뒤에 client pc에서 nslookup으로 해당 서브도메인 aa.ddns.net을 검색했을때 ip를 제대로 받아오면 됩니다.

 

profile image
Intuit 2022.05.06. 16:27
쪼꼬모카라떼

ddns.net 도메인을 리버스프록시 서버에 걸어주고 (1.1.1.1)

서브도메인 a, b, c를 cname으로 ddns.net에 잡아주시면 됩니다.

이렇게 되면 결론적으로 ddns.net, a.ddns.net, b.ddns.net, c.ddns.net 모두 1.1.1.1을 바라보게 되는데

 

리버스 프록시 담당하는 곳에서는

 

요청이 a.ddns인지 b.ddns를 확인하고 그에 맞는 곳으로 전달해줍니다.

profile image
쪼꼬모카라떼 2022.05.07. 00:54
Intuit

감사합니다. 제가 가입한 도메인은 host 3개만 등록하는 무료 서비스라

도메인 구입해서 해 보겠습니다

profile image 3등
하늘위의하늘 2022.05.06. 15:51

앗 NPM이라는 프로그램쓰면 비주얼적으로 현재 상태를 보여주는 건가요?

너무 좋은데요..

매번 vi에서 수정하고 되나 안되나 대기하고 있었는데 말이지요 ㅎㅎ

profile image
달소 글쓴이 2022.05.06. 15:58
하늘위의하늘

NPM은 신입니다~~

저도 이전에 매번 vi만 사용했었죠.. 인증서관리도 편합니다 ㅎ

profile image
달소 글쓴이 2022.05.06. 19:12
하늘위의하늘

음... 그냥 컨테이너 재시작하면될듯합니다 ㅎㅎ저런컨피그는 수정하면 자동으로 reload 되는듯하구요

DarkAcid 2022.05.06. 22:46

진짜 충격은 도커와 같이 쓸때입니다.....80:443을 몇개가 열리던 도커이름으로 잡아주면 다 패스합니다 😀 다만 아직 제가 모자라서 웹사이트 워드프레스나 라이믹스 같은 사이트는 어떻게 설정해야하는지 모르겠더라구요

12

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
질문 /var/www 폴더가 삭제되었습니다. ㅜ,.ㅜ 2 니속사정 16시간 전20:42 193 +1
잡담 jellyfin 자원 진짜 안쓰네요 kmw_ 18시간 전19:26 269 +1
잡담 iventoy pxe는 속도가 엄청 느리군요.. nohdd는 왜 빠르지.. 음... 2 purndal 1일 전00:52 159 +2
3899 질문
normal
니속사정 16시간 전20:42 193 +1
3898 잡담
image
kmw_ 18시간 전19:26 269 +1
3897 잡담
image
ljr10 18시간 전18:44 193 0
3896 질문
image
ljr10 1일 전12:45 153 0
3895 잡담
image
purndal 1일 전00:52 159 +2
3894 질문
normal
스키피95 2일 전00:07 118 0
3893 질문
normal
고심분투 2일 전17:10 199 0
3892 질문
image
경호 2일 전15:50 97 0
3891 질문
normal
경호 3일 전13:23 66 0
3890 잡담
image
기현 3일 전07:34 432 +2
3889 잡담
image
keiminem 4일 전13:12 528 0
3888 잡담
normal
달소 4일 전11:38 318 +2
3887 질문
image
EXP 4일 전23:48 93 0
3886 질문
normal
홍익 4일 전19:26 224 0
3885 정보
image
지딱코 4일 전14:31 237 +1
3884 가이드
image
달소 5일 전22:22 396 +3
3883 가이드
image
ljr10 6일 전08:20 182 0
3882 가이드
image
달소 6일 전06:46 203 +1
3881
image
달소 6일 전05:50 242 +6
3880 정보
image
달소 6일 전05:38 141 0