본문 바로가기
잡담

뭔가 어디다가 적어놔야 할 거 같은데... 일단 적어두기...

by Pendine 2026. 1. 3.
728x90
반응형

이걸... 평소에 옵시디언에 적어놓긴하는데....
.gitlab-ci.yml 를 이용해서 깃랩 러너를 통해

도커 컨테이너를 nginx를 실행하고, 인증서 발급받고,
다시 인증서를 적용한 리버스 프록시가 적용된 nginx를 띄워야하는데,
자꾸..... 어디선가.... 진행을 하다가 문제가 생겨서 해결하려다,
진행 방향이 살짝 틀어저 다른 방향으로 진행하다가, 다시 원래대로 돌아오는 일을 반복하게 되서....
가능하면 옵시디언에만 적어두려고 하는데....
진행하면서 생긴 문제를 적다보니, 근원적으로 해결해야하는 문제를 못보는 일이 반복되서 적어야겠다는 생각.

해야할 것 갱신목록

  1. 웹 접근성 고려
  2. 관리자용 페이지 생성이나 url 확인
    • 서브 디렉토리로 관리자 페이지 생성.
      • (관리자 미만 등급 접속시도 시 404 전달예정)
  3. 프론트 - 타입 안정성을 이용한 백엔드 응답 메시지 포맷팅
  4. 깃랩 CI/CD = 미니PC 활용해서 CI/CD 적용 후 미니PC 도커로 실행
    1. 전제조건 외부접근이 가능하도록 공유기 포트포워딩
    2. 배포를 하면, DB, 백엔드, 프론트의 컨테이너가 생성될건데,
      Mini PC의 포트 개방은 프론트 컨테이너만 할 것.
    3. 도메인을 구매해야지 인증서를 쓸수있을것같은데 확인하기
      (이유는 https의 보안쿠키 때문에 https 적용해야함)
  5. 프론트 토스트 메시지 컴포넌트 만들기
  6. 디자인 통일하기 (컴포넌트)
    1. 반응형 웹디자인 해야함
  7. 타입 스크립트 인자값 사용방법.
  8. 토스트메시지 - 정상출력, 오류출력일대랑
  9. 가계부 삭제,
  • 가계부 삭제를 위해선, 절차가 복잡하더라도 설정페이지로 이동해서 삭제하도록
    • 모달창 띄우기 - 삭제할때는 2번 의 절차. 삭제버튼 클릭 후 유저에게 확인받기.
  1. 유저로그아웃
  2. 추가적으로 확인해야하는건,
    • 가계부를 생성하고 삭제할때마다 가계부 목록이 즉각적으로 업데이트 되야함...
  3. 프론트엔드
    • 공통컴포넌트를 만들기
      • 이걸 왜 지금하냐고? 이제 조금 굴러봣다고 어떻게 해야할것같은지 이제서야 감이 잡힘.
        평생 놀았으면 진짜 평생 못했고, 제미나이나 챗지피티 없었으면 엄두를 못냈음.
  4. 백엔드
    • 멱등성 처리.
  5. 백엔드 APM 도입하기(로그파일 생성, 로그파일 상세화 및 패턴화).

오늘 할일

배포, 개발, 로컬 테스트시 전부 인증서가 필요하기때문에

미니PC의 도커 컨테이너에 Nginx 를 사용하여 리버스 프록시를 통해 인증서를 통해

ssl 인증서 요구를 대체할 예정이고, 프론트와 백엔드의 인증서를 사용하기 위한 설정을 전부 덜어내기.
백엔드 프론트엔드의 ssl인증서를 대체할 수 있는지, 확인할예정.

=> 어제 결과
초기 엔진x설정시..... 인증서가 없는상태에서,
ssl 인증서만 받기 위해서 없는 상태에서 cert bot의 데이터를 받기 위한 초기화만 하면 되는데

사용 가능한 방법

  1. certbot을 사용해서 인증서를 발급받기전에 80 포트를 열고, cert bot이 인증한뒤, 443 포트를 사용 가능하도록 설정한 nginx를 실행하여 인증서를 사용할 수 있도록한다.
  2. cert bot을 통해 인증서를 받기 전, 가짜 ssl 인증서를 발급받은 것 처럼 만들어서, 갱신하는 동작 형태와 동일한 수행을 진행한다.
  3. 클라우드 플레어가 제공해주는 ssl 인증방식을 유연(flexible) 형태로 지정해서
    클라이언트 <- (https) -> 클라우드플레어 <- (http) -> 서버
    형태로 진행한다. (폐기)

3안을 폐기한 이유는 향후 업무를 진행하는 곳에서 , 클라우드 플레어를 사용하지 않는다면 구현해야하는 방법을 모르는 상태에서 불리하기 때문에,
nginx의 리버스프록시 설정과, cert bot (let's encrypt) 를 사용해서,
ssl인증을 유지하는 것을 해야봐야 한다고 판단함.

그리고 ssl 인증을 위해서 nginx를 80 포트만 열어서 진행할때나, 가짜 ssl 인증서를 입력할때 등,
초기 설정에서는 도커파일, 도커 컴포즈 파일 설정으로는 진행이 불가능한 것 같음.
.gitlab-ci.yml을 통해서 진행해야할 것 같음.

제미나이 & 챗지피티의 문제점
제미나이한테 물어보면, 도커 파일 설정으로 안된다고 했다가,
다시 된다고했다가, 다시 안된다고 하면서 도커 컴포즈 파일을 이용해서 도커 파일을 동작시켜서 하면 된다고 했다가. 왔다갔다 하길래
.gitlab-ci.yml 의 설정이 낫다고 했다가.
그냥 이리저리 흔들리는 갈대가 되버림.

-> 이거 되는지 물어보면 된다고 답변 했다가, 진짜? 내가 볼 땐 이거 이런 설정을 하거나 이런 스크립트를 지원해? 안하면 이런동작 못해서 안될 것 같은데 진짜 돼는거 맞아? 라고
뭔가 안될 수 도 있는 문제점을 짚어서 물어보면, 맞음 안됨 ㅇㅇ 이래 답변함.
얘가 나랑 프로젝트를 진행하기 위해 대화 했던, 대화 내역에서 물어봐도, 설정하려고 이런저런 고려사항을 고려해서 진행하려고 말했고, 소위 말해서 프롬프트를 입력하고, 제대로 입력된걸 확인하고 시작했는데도,
설정하려고 진행하면, 그때부터 얘도 멍청이가 됨.....
그래서 기초적인 지식을 빠르게 습득하기 위해, 되는 방법들, 이 변수의 이름은 뭔지, 어떻게 설정할 수 있는지 물어보고, 진짜 내가 그렇게 돌아가는지, 직접 변경하고, 깃랩에 푸시하면서 확인해보고, 그 뒤에, 차근차근 진행하는 방식으로 가야함.
그러니까... 복잡한 설정같은걸, AI 한테 맞기면,
그 순간부터는 이 AI 놈들은
'이거 내가 설정하기 위한 연산하면 답변 대비, 들어가는 자원이 비합리적으로 판단됨.
최대한 적은 자원을 들여서 사용자가 원하는 동작을 하는 쉘파일을 짜서 이거 실행하라고 알려줘야지' 라는 상태로 진행하는 듯 함.
이렇게 되면, 나는 나름 모든 고려사항을 반영하고 설정하려고 ai 붙잡고 진짜 최선을 다햇는데,
나는 알지도 못하는 걸, AI는 이것저것 다 집어넣어서 마구마구 만들어낸 코드를 그대로 가져다 쓴다?
말 안해도 ㅇㅇ;;;

일단 현재 해야할건, mini PC의 nginx를 설정해서,
배포(메인브랜치), 개발브랜치, 로컬테스트를 전부 하나의 nginx에서 처리하도록 하고,
백엔드나 프론트엔드에서 사용해야하는 설정값은
gitlab 의 프로젝트 설정에서, ci/cd 변수 설정으로 입력하도록 강제하여,
로컬테스트와, 브랜치에 올린 테스트 환경을 분리될 수 있도록 하고,
.gitlab-ci.yml에서는 브랜치이름을 판단하여 깃랩 ci 변수에 등록된 변수를 가져다 사용하도록 해야함.

이렇게 구성하게 된다면,
배포, 개발, 로컬에서 구성한 환경을 필요에 따라,
미니pc에 등록된 하나의 nginx 환경을 이용함으로써,
백엔드의 cors를 현재 환경에 따라 구성해줄 필요 없이,
각 백엔드는(배포, 개발, 로컬) 하나의 cors 설정으로 각 프론트의(배포, 개발, 로컬) 개별 요청을 처리해줄수있음.


나중의 나에게 설명하는 하나의 nginx로 설정한 이유.
배포, 개발에서 사용하게될 nginx만 구축하면 되지 않나?

결국엔 배포, 개발, 로컬에서 모두 https 보안쿠키를 활용해야함.

보안 쿠키가 ssl인증서가 없다면 브라우저가 보내지 않는 문제로 인해,
로컬(개발PC)을 CA인증자로 설정해서 ssl 인증서를 발급하고, 프론트나, 백엔드에서 사용한 이유를 잊으면 안됨.
구매한 도메인에서 적용하기 위해,
이번엔 CA인증자를 미니PC로 설정하기위해 Let's Encrypt를 사용하는 것

  • 3개월마다 갱신해줘야함 (자동갱신도, cert bot 컨테이너를 활용해서 진행하기)
728x90
반응형

댓글