- 18
- xnview
- 조회 수 1329
안녕하세요 (^ㅡ^)(_ _)
최근 폭풍 문의로 3레벨을 돌파한 초보 회원입니다
역방향 프록시의 개념과 구현이 이해가 되지않아 몇주를 '맛스타' 님 다리를 붙잡고 질질 메달려 있었는데요;
오늘!
'맛스타' 님의 따뜻한 보살핌으로 드디어 역방향 프록시에 대한 이해와 구현을 성공하였습니다 ㅎㅎ
그리고 잠시 미뤄두었던 새로운 고민에 빠졌습니다
처음엔 그냥 역방향 프록시가 모든걸 해결해 줄 수 있을줄 알았는데,
'맛스타'님의 친절한답변을 읽다보니 네트워크 구성에 근본적인 문제가 있다고 생각하게 되었습니다
그래서 현 상황을 설명드리고 궁금한 부분에 대한 조언을 얻고자 합니다
▼ 여기서부터 문의 내용입니다 ^^;
SSL 적용을 위해 이것저것 알아보고 구현해보다 막히는 부분이 있어 문의드립니다
현재 테스트중인 윈도우서버 > IIS에 SSL 을 적용하였고,
별도로 연습중인 NAS > XPEnology 에 SSL을 적용하려고 하고있습니다
(SSL 은 모두 Let's Encrypt를 사용하고 있습니다)
그런데, 80포트를 IIS 할당하고 보니, NAS에 할당할수가 없어
NAS에는 8080 포트를 분배해줬습니다
그래서,
IIS는 ABC.com 으로 접속 가능
NAS는 123.com:8080 으로 접속이 가능해졌습니다
그런데,
Let's Encyrpt를 NAS에 적용하려고 하니, 뒤에 :8080 포트가 붙어 그런가 적용이 되지않고 있습니다
(Let's Encyrpt 정책을 보니 단일도메인 allis .com 그리고 와일드카드 nas. allis .com 까지만 된다는걸 보아 포트번호가 뒤에 붙어있는 것이 문제라고 생각하였습니다)
현재 서버 구성이 VMware ESXi에 각각 사설IP를 할당하여 IIS와 NAS를 운영중인데요,
혹시 ESXi의 네트워크 기능(?)을 이용해 IIS와 NAS 양쪽에 80포트를 사용할 수 있는 방법은 없는지 문의드립니다
도움이 되실까 하여 간략하게 이미지로 그려보았는데,
시간 되시면 조언 부탁드리겠습니다
고맙습니다 (^^)(__)
댓글 18
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
'맛스타' 님 매번 친절한 눈높이 교육 감사드립니다 (_ _)
우선, 말씀해 주신 내용은 감사드리며 잘 읽었습니다
역방향 프록시를 살짝(?) 이해하고 나니, 리디렉션 으로 인한 SSL 설치의 실패 가능성에 대해서도 무슨말인지 느낌은 알겠습니다
- 확실하게 이해했다고 말씀드리고 싶지만...ㅠㅠ
그리고 안내해주신 TWIN IP는 예전에 블로그를 보고 한번 해본적이 있었습니다
워낙 블로그에서 강의해주신 내용들이 꼼꼼하고 디테일하게 적힌 눈높이 교육이라 그대로 따라하니 바로 TWIN IP가 적용되었는데요
그렇게 하다보니 집안에 구성해놓은 기가비트 사설IP 라인이 엉킬것같아 일단 성공한거에 만족하고 해제하였던 기억이 있습니다
이렇게, 역방향 프록시를 하드캐리 해주시고 대안까지 친절히 안내해주셔서 진심으로 감사드립니다
웹서버도 구현할 줄 몰라, 복잡한거 필요없이 XPEnology에서 웹스테이션을 이용해서 구성하면 되겠다 싶어서 도전한 적이 있었습니다
그때는 5.x 버전이었는데, 가상호스트 갯수의 20개 지원? 한계와, 웹사이트를 만들기 위해 사용하였던 소스코드의 호환성 문제로
다시 리눅스를 알아보다 윈도우 서버로 넘어왔습니다
그당시, 블로그의 강좌가 아주 큰 힘이되어 지금의 얕은 기반을 잘 쌓아올릴 수 있게 되었습니다
더딘 학습에, XPEnology가 많은 발전을 하여;;
안내해주신대로 이젠 다시 XPEnology에서 다시 세팅해봐도 좋을 정도가 된것 같네요;
- 5.x 때는 리버스 프록시 같은 기능도 없고; 웹스테이션 자체가 붙박이 기능같이 있었던터라 한참 또 더듬더듬 따라가야 하지 않나 싶습니다
우선은 맛스타 님의 블로그를 한장한장 넘기며, 지금까지 쌓아올린 지식이 아까워서라도 ㅠㅠ; 더 궁리를 해보도록 하고,
정 안되겠다 싶을경우 XPEnology를 기웃거려 봐야겠습니다
늘 감사드리며 도움을 드리기 보다는 얻어가는 초보자의 한계를 벗어나 이곳에 도움이 되었으면 하는 마음입니다
다시한번 소중한 조언 감사드립니다^^
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
80포트를 사용하는 서버에서 다른 포트를 역방향 프록시 설정해 주시면 됩니다.
윈도우 서버를 사용해본적이 없어서 잘 모르겠습니다만.
제가 리눅스 서버를 사용할 때에는, 80/443 포트를 아파치에 물려두고,
3000, 3030, 8080 등의 포트를 여는 웹솔루션들을 아파치에서 역방향 프록시 설정하여 사용합니다.
IIS의 방식은 좀 다른지 모르겠습니다만, 아파치 서버에서 지원하는 역방향 프록시의 경우 Re-Direct 보다는 Re-Write에 더 가깝다고 생각합니다.
요청만 그대로 넘기는 것보다는 요청을 복사해서 대상에게 넘기고, 돌려받은 응답을 서버 본인이 응답한 것 처럼 돌려주는 것이니까요.
어쨌든, .well-known 디렉토리를 제외하고 역방향 프록시를 적용할 수 있다면 LE SSL도 발급이 가능할 것으로 보입니다.
아니면 TXT 인증을 하는 방법도 있겠지요. 어떤 방식이든 SSL을 발급만 받고 문제가 없으리라 생각합니다.
물론 XPEnology에 SSL을 적용하는게 아니라 역방향 프록시를 적용한 Windows Server에 SSL을 적용하셔야 합니다.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
지금처럼 네트워크 구조상에서 역방향 프록시를 하는 서버와 목적지의 서버가 수평적인 구조를 갖는 경우 역방향 프록시는 제대로 작동하지 않을 가능성이 높습니다. (물론 수평적인 구조에서 시도할 수 있는 방법이 있을 수 있으나, 제가 모를수도 있습니다.)
아마, 이전에 아파치의 proxypass 같은 기능들을 보면 아파치가 상위단에 있고, 역방향프록시로 연결해야 하는 목적지는 그 하위 네트워크 단에 있어야 할겁니다. 아파치가 총괄하고 그 서버내에서 WAS 같은 부가 애플리케이션을 같은 서버에서 돌리지 않았을까합니다.
그리고 LE SSL을 도메인 인증방식이 있는것을 깜빡했네요. 갱신이 좀 번거롭긴 하겠지만요.
리버스프록시를 한 도메인이 서버차원에서 네이티브 인증방식(봇을 이용한 인증방식)을 통해 LE 인증서가 발급 가능한지는 저도 미지수라 시도해봐야 알겠네요. 역시 이런대화는 여러사람의 의견을 들어봐야 하는 것 같습니다.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
로컬로스트의 다른 포트로 프록시 설정이 가능했기에 수직/수평을 떠나 프록시를 설정하는 서버에서 해당 주소로 접근이 가능하면 되는것으로 판단했습니다.
리버스 프록시도 프록시의 일종이니, 다르지 않을것이라 생각했는데, 아니었나보군요...
LE SSL은 문제 없을것으로 보입니다.
ZeroSSL과 같이 따로 서버에서 봇으로 구동하지 않고, HTTP Verification으로 인증하고, 적용시킬 수 있으니,
HTTP 인증에 필요한 디렉토리(.well-known 등)만 예외설정을 하거나, 프록시의 목적지에서 해당 파일을 인증시킨다면 잘 작동하리라 봅니다.
+
HTTP 인증은 이런 방법으로 하면 되겠군요. .well-known 폴더를 제외하고 재작성을 시키면 HTTP 인증에는 문제가 없으니까요.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
그게 일반적인 프록시와는 조금 다른 것 같습니다.
리버스 프록시는 하나의 컨트롤 타워가 되는 역할을 하는 서버가 존재해야 하는데 그 서버가 또 직접 컨트롤 가능한 것(로컬 또는 서버에서 생성된 DHCP 주소)만 가능했었습니다.
LE의 경우 도메인 기반 인증서이기 때문에 파일로 발급을 받는다면 적용이 될것 같네요.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/536/322/322536.png?t=1522065061)
지금 제가 공유기 관리 페이지를 라즈베리 파이에 설치된 nginx를 리버스 프록시로 사용해서 ssl 쓰고 있으니까 그런건 아닐 겁니다.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
nginx는 그렇게 수평적인 구조도 가능한가요? 하긴 nginx는 리버스 프록시 기능이 강력해서 아예 리버스프록시 서버로만 쓰는 경우도 있으니 가능하기도 하겠네요.
실제로 시도된 사례가 있으니 IIS에서도 작동될 가능성이 있기도 한것 같아보이네요.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/536/322/322536.png?t=1522065061)
리버스 프록시를 쓰면 리버스 프록시에서 certbot을 돌리는게 맞습니다. nginx-실제 웹서버 사이는 자기 서명된(아니면 아예 사설 CA를 굴리시던가..) 인증서를 사용하고요
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
네모 회원님
여러차례에 걸쳐 제 글에 관심을 가져주시고, 원하는 결과를 위해 고민해주셔서 감사드립니다
조언해주신 말씀을 정말...ㅠㅠ
하나를 알려주시면 열두개를 알아듣고 싶은데; 너무 몰라서 답답하네요 ㅎㅎ
하지만 그림으로 안내를 해주셔서 전달하시고자 하는 내용이 무엇인지 바로 알 수가 있었습니다
NAS로 사용하는 XPEnology가 리눅스 계열이고 또 역방향 프록시 기능을 가지고 있다하니 조언해주신 내용이 가능하지 않을까 하는 희망을 갖게되는데 한번 도전 해봐야겠습니다 ^^
- 그런데 번외로 첨부하신 이미지는 어떤 에디터로 작업하신 건가요? 색감이나 선의 정리가 참으로 보기좋고 간결해서 여쭤봅니다 ^^;
여러차례 친절한 말씀과 안내 다시한번 감사드립니다^^
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
이미지는 그림판으로 제작한겁니다!^^;;
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
헐.. 그림판으로 저런 센스가 가능한가요 ? ㅎㅎ
대단하시네요 ^^;
(특히 라인 표현 보고 무슨 에디터일까 많이 궁금했습니다)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/536/322/322536.png?t=1522065061)
ssl을 nginx 프록시 단에서 끊는 방법도 있습니다. (웹서버는 http, ssl은 nginx가 처리)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
abnoeh 회원님 말씀 감사드립니다
역시나 리눅스가 이런면에서는 월등한가 보네요
리눅스 OS를 하나 정해서 시작해 보아야겠습니다 ^^;
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/536/322/322536.png?t=1522065061)
아 리버스 프록시 쓰실거면 80/ 443 포트는 전부 리버스 프록시로 가게 하고 프록시에서 필요한 곳으로 보내셍
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
말씀 감사드립니다 ㅠ
진작 리눅스 공부좀 해놓을껄 완전 까막눈이니 더듬더듬 검색부터 하게되네요 ^^;
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/496/208/208496.jpg?t=1505491080)
제가 exsi는 많이 써봤는데, iptime에서 80포트 설정이 ip 하나만 되서 문제가 되는건가요?
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
연우빠 회원님 댓글 감사드립니다
말씀하신게 맞습니다
1. SSL을 설치하려고 하니, 포트포워딩으로 분류된 NAS는 설치가되지않아
2. 포트번호가 없는 도메인을 만들려고하니 이미 80포트는 IIS에서 사용중 이었습니다
3. 역방향 프록시를 활용하면 되겠다 했습니다
4. 역방향 프록시는 겨우 성공시켰습니다 ^^;
5. 그런데 애초에 원했던 1번은.. 하나의 IP에서 구현이 불가능 한듯 하네요 ^^;
여기까지가 현재까지 알아낸 사항입니다
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
일단 안타까운 사실부터 말씀을 드리자면 현재 Let's Encrypt 인증서로는 리디렉트된 주소에 대해 보안 연결을 지원하지 않습니다.
예를 들어 abc.com 이라는 사이트를 studyforus.com 으로 리디렉트되도록 설정된 환경이라면 Let's Encrypt 인증서 발급시 abc.com 의 실제 연결 IP를 확인하는데, 이 때 자꾸 studyforus.com 이라는 주소로 넘겨주니까 안전하다고 판단할 수 없는지 인증서를 발급해주지 않고 있습니다.
역방향 프록시의 경우 리디렉션의 일종이기 때문에 역시 제대로 발급되지 않을 것으로 생각됩니다.
다시 원점으로 돌아와서 단순히 페놀로지에 let's encrypt 인증서를 사용하고 싶다면 아래의 과정을 통해 비슷하게 구현이 가능할 것 같습니다.
(제가 직접 세팅을 하는게 아니라서 잘 안될 수도 있습니다. 또한 페놀로지가 시놀로지 기반이기 때문에 시놀로지의 설정방식대로 설명합니다.)
1. 공유기에서 페놀로지 나스로 TwinIP 설정을 해줍니다. 이로써 페노로지는 공인 IP를 갖게 됩니다.
2. 페놀로지에서 DNS Server 패키지를 설치하여 페놀로지와 도메인을 다이렉트로 연결이 되게끔 설정합니다. (IIS에서 바인딩 설정의 호스트 헤더와 비슷한 역할을 합니다.)
3. 그리고 페놀로지의
제어판 > 보안 > 인증서 탭으로 이동을 하여 "새 인증서를 추가" 합니다. 거기에 보시면 Let's Encrypt 인증서를 얻을 수 있는 설정이 있을 겁니다.
단, 위의 설정을 하려면 6.0.2 이상의 버전이어야 한다고 합니다.
이런식으로 설정하면 윈도우 서버는 설치할 필요가 따로 없습니다. 그리고 새 사이트를 만들기 위해 굳이 윈도우서버를 설치해서 IIS를 쓰는 것 보다 페놀로지에서 웹서버 기능을 추가하여 쓰는 것이 더 편리할 것 같습니다.