1. 리버스 프록시 설정

김장남·2023년 12월 14일
1
post-thumbnail

자. 글을 쓰기로 했다. 아니, 실은 이제막 백엔드를 공부하는 지인과 로그인을 구현해보기로 했는데 그냥 갑자기 CI/CD 파이프라인을 구축해보고 싶었다. 왜냐? 회사에서 사용하는 Argo CD가 너무 영롱해보였다. 갖고싶었다.
뭐 그까이거 대충 휘적대면 뾰로롱 하고 생겨날줄 알았다.
사람들이 이미 쉽게 쓰도록 만들어놓은게 있을줄 알았다. (본인이 못찾은게 분명하다.)

하지만 항상 그렇듯 가볍게 예상은 빗나가 버렸고 무려 2주동안의 삽질이 시작됐다. (feat, 무과금 GPT)

마침내 기계와의 전쟁에서 승리하고 영롱한 Argo CD와 CI / CD 파이프라인을 갖게되었다!

그리고 그것을 단톡방에 자랑했고..블로그에 기록을 남겨야겠다고 사람들에게 단언해버렸고.
글을 기다리겠다는 사람도 생겨버렸고. 그래서 나를 채찍질하며..

이렇게 돼서 글을 쓰기로 했다.

이것은 이런 내용의 기록이다. 이것은 역사로 남을것이며...blarblar

0. 사전 환경

0.1. 내가 갖고 있는것

1. domain

나는 도메인을 하나 갖고있다. 내이름 + .com 으로 된 도메인

도메인을 갖게 되니까 알게되는 것이 있었는데, 정확히는 .com, .net, .org 같은 도메인을 국제도메인이라고 하는데 이런 도메인을 구매하면 '국제도메인관리기구(ICANN)' 에서 메일이 오게되고 15일 이내 확인 하지 않으면 도메인을 정상적으로 사용 할 수 없다. 이것을 도메인 구매하고 1년이 다되어갈때 알았으며 내가 가진 도메인을 쓸수 없는것이 내가 dns설정을 잘못한줄 알았다..(눈물) 다들 나같은 실수를 하지 않길 바라며 남겨본다.

2. 개인 서버

nas역할을 할 자작 서버를 꽤 오래전에 만들었지만 netflix등의 다양한 ott들이 많아지고 좋아지면서 자연스럽게 쓸모가 없어졌다. 그 서버를 활용해서 proxmox를 설치하고 게임서버를 돌리기도 하고 작은 프로젝트를 띄워보기도 하며 잘 놀고 있다. 여기다 모든것을 구축 할 것이다!

proxmox에 대해서는 나무위키링크를 남기도록 하겠다. (나도 사실 잘은 모른다.)
간단하게는 오픈소스 하이퍼바이저 운영체제다. 쉽게 말하면 가상화를 해주는건데
하나의 pc에서 여러가지 운영체제를 사용하거나 docker처럼 컨테이너를 올려서 사용하거나, vm을 만들어서 사용 할 수 도있다.

정확히 같지는 않겠지만 이해를 돕기위해(나도 이렇게만 이해하고있다..) 비유를 하자면
proxmox = aws
vm/LCX 컨테이너 = ec2
같은 느낌인것이다. 그러니까 내 서버 하나에서 리눅스도 사용하고 윈도우도 사용하고 할 수 있고

3. DNS

Cloudflare를 사용하여 내 도메인을 관리하고있다. 전에는 한국의 무료 DNS인 DNSZi를 잘 사용했으나, 그냥...유명한 서비스 사용해보고싶어서 한번 옮겨봤다. (아니 분명 이유가 있었을것 같은데 기억이 안난다. DDNS설정 때문에 했었나...?)

1. 리버스 프록시를 사용해보자!

얘기만 무성히 들어왔다 리버스 프록시를 사용하면 80, 443 포트만 열고 여러가지 서브도메인들을 사용할수 있다는것을
하지만 귀차니즘에 하지 못하고 있었는데 이 기회에 한번 설정을 해야겠다고 생각했다.
근데 역시 이것도 사람들이 만들어놓은 도구가 있었다 이름하야 NPM(node package modue이 아니라 nginx proxy manager)
처음에 자꾸 npm npm 하길래 아니 왜 여기 npm이 나오는거지 했는데 그것이 그것이 아니었다...
검색 하면서 알게된 서버포럼에서 알게됐는데 여기서 운영자인 달소님의 '차세대 Nginx Proxy Manager NPM Plus 설치하기.'를 참고해서
proxmox에서 nginx용 LCX컨테이너를 하나 만들어 NPM을 설치했고 Cloudflare 인증서 까지 발급해서 설정 해주니 ssl도 잘 동작했다.

  1. proxmox에서 nginx reverse proxy용 LCX 컨테이너 생성
  2. NPM설치
  3. Cloudflare 인증서발급
  4. NPM에 인증서 등록
  5. NPM에 리버스프록시 할 domain(ex. game1.soorokim.com)과 내부 ip, port를 설정해준다.(ex. 192.168.5.99:3000)
    (나는 기껏 NPM 다 설치해놓고 헛짓거리 해서 NPM설정 그대로 들고와서 nginx로 다시 만들어서 사용하고 있다...그래서 이미지를 올릴수가 없다.)
  6. DNS에 sub domain(cname)설정
  7. 사용하는 공유기에서 80번(HTTP) 443번(HTTPS) 포트를 nginx reverse proxy컨테이너의 ip의 80번 443번 포트로 연결해준다.

    (대충 요런식! 사용하는 공유기마다 설정창은 다를 수 있다! 하지만 기본적으로 외부 포트, 내부 포트, 연결할 내부 ip이 구성은 동일하다!)
  8. game1.soorokim.com에 접속해본다.

잘 접속이 된다면 성공한것이고 아니라면 힘을 내보자 할 수 있다.

서버포럼의 글을 잘 보고 따라 했다면 문제없이 잘 될것이다!

아직 시작도 안했는데 리버스 프록시 구성한다고 하루가 걸렸다. nginx도 잘 모르고 네트워크도 잘 모르는데 마구 삽질을 하다 보니
대충 이해도 하고 대충 동작도 한다!

다음 이야기 예고..

2. Argo CD를 설치해보자. 다음에 알아보자.

profile
React 개발자

0개의 댓글