본문 바로가기
Server

[NCP] Nginx를 이용한 Static Resource Container service 구축기(1)

by VENUSIM 2023. 10. 26.

Naver Cloud Platform에 몇가지 기능의 부재로 프론트 소스 도메인 서비스를 위해 nginx를 통한 정적 리소스 서버를 구축하였고, 쿠버네티스와의 연동과 오케스트레이션을 위해 컨테이너 기반으로 구축하기로 하였다.

 

Nginx 설정

Resource serving 흐름 및 구성도

 

Nginx Configure – 전체적인 설정에 대한 설명

 

Nginx Configure – 세부 설명

location 문법 우선순위

regex 적용 순위 설명 문법
= 1 순위 완전 일치 location = / {
}
^~ 2 순위 prefix 일치 location ^~ / {
}
~ 3 순위 대/소문자 일치 location ~ ^/ {
}
~* 4 순위 대/소문자 무시하고 일치 location ~* ^/admin {
}
/ 5 순위 하위 일치 location / {
}


rewrite

rewrite regex replacement [flag]
▷ rewrite ^/student /fileUpload.html permanent;

flag 설명
last 현재 블록 안에서 rewrite 작업 후 다른 작업 처리
break 현재 블록 안에서 rewrite 작업 후 다른 작업을 실행 후 종료 (다른 rewrite 실행하지 x)
redirect 302 Temporary Redirect
permanent 301 Permanent Redirect

  

▶ 여기서 permanent를 사용한 이유?
 
요구사항
▷ Domain은 고정하고 path는 재 정의한 내용이 유지되며 NCP의 Object Storage의 Resource를 Serving
 
프로세스
1. Rewrite을 통해 Path를 재 정의 하고 영구적인 이동을 통해 nginx로 재요청한다.
   a. test2.com/student 요청
   b. rewrite ^/student /fileUpload.html permanent; 에서path를 변경하여
       test2.com/fileUpload.html 요청

2. 들어온 요청을 NCP Object Storage로 Host를 고정하고 Reverse Proxy를 한다.
   a. test2.com/fileUpload.html 요청
   b. location ^~ /을 통해 “/”로 시작하는 모든 path를 해당 블록에서 처리
   c. Host 고정 및 Object Storage로 Resource 요청 (하위 “발생한 이슈와 해결“ 내용 참조)



proxy

 

발생한 이슈와 해결 과정

1. “no resolver defined to resolve” 에러 발생

▷ dns 서버 IPresolver에 지정하여 해결

 

2. proxy_pass를 통해 Object Storage와 연결을 성공 하였으나 403 forbidden 권한에 관련된 response status 발생

▷  cdn+ 에 설정되어 있는 도메인 test1.com과 호스트 헤더 커스텀을 통해 변경된 test2.com

도메인이 달라 발생하는 원인임을 파악

 

하나의 CDN에 두가지 도메인을 허용하도록 설정
- test1.com의 공개 도메인을 통한 접속
- ncp 도메인을 통한 접근과 접근 요청하는 origin host를 맞추어 줌으로서 403 해결

 

3. test2.com/student로 요청 하였을 경우 test2.com/fileUpload.html을 예상하였으나 origin hostpath가 변경되지 않고, ncp 요청에 대한 pathrewrite 되는 현상 발생

▷  1차적으로 rewrite를 통해 301 영구 리다이렉트를 먼저 작업하여 path 변경 이후 proxy_pass 하는 방식으로 변경

 

 

다음 장에서 Jenkins를 통한 이미지 빌드 배포와

k8s를 연동하고 컨테이너 서비스 하는 방법에 대해 정리하는 시간을 가지겠습니다.

https://dev-junhee.tistory.com/70

댓글