본문 바로가기
IT&DEV -*

[OMV6]Cloudflare와 NginxProxyManager를 활용한 서브도메인 무료 SSL적용

by Hoft 2023. 4. 6.

이전 포스팅에서 설치한 NginxProxyManager 통해 여러가지의 서브도메인에 대한 proxy 구성을 하고자 합니다.

2023.03.31 - [IT&DEV -*] - [OMV6]Docker - Nginx Proxy Manager 설치

 

프록시(proxy)란, 인터넷 상에서 다른 컴퓨터나 서버로의 접근을 중개해주는 컴퓨터 또는 소프트웨어를 말합니다. 일반적으로 프록시는 사용자의 요청을 받아서 해당 요청을 외부 서버에 대신 전달하고, 외부 서버에서 받은 응답을 다시 사용자에게 전달합니다.

프록시는 주로 보안, 프라이버시, 캐싱 등의 목적으로 사용됩니다. 예를 들어, 회사에서는 인터넷 사용자들이 회사 내부 네트워크로 직접 접근하지 않고 프록시 서버를 통해 접근하도록 하여 보안을 강화할 수 있습니다. 또한, 사용자의 IP 주소를 숨기거나 인터넷 사용 기록을 남기지 않도록 하기 위해 프록시를 사용할 수도 있습니다.

 

 

CloudFlare에서 DNS의 A레코드를 설정하여 여러가지 서브도메인에 대한 proxy 설정을 하려고 합니다.

 

DNS(Domain Name System)은 인터넷에서 도메인 이름을 IP 주소로 변환하는 시스템입니다. 이를 통해 사용자는 도메인 이름을 입력하여 해당 웹 사이트에 연결할 수 있습니다. DNS는 다양한 유형의 레코드를 포함하고 있으며, 이 중에서 가장 일반적으로 사용되는 것은 CNAME과 A 레코드입니다.

CNAME 레코드는 "Canonical Name"의 약어로, 하나의 도메인 이름이 다른 도메인 이름을 가리키도록 지정하는 레코드입니다. 이를 통해 도메인 이름의 별칭(alias)을 지정할 수 있습니다. 예를 들어, "www.example.com"이라는 도메인 이름이 "example.com"이라는 다른 도메인 이름을 가리키도록 CNAME 레코드를 설정하면, "www.example.com"으로 접속하는 모든 요청은 "example.com"으로 리디렉션됩니다.

A 레코드는 "Address"의 약어로, 도메인 이름을 IP 주소로 매핑하는 레코드입니다. 이를 통해 웹 사이트에 접속할 때 컴퓨터가 실제로 연결해야 할 IP 주소를 찾을 수 있습니다. 예를 들어, "example.com"이라는 도메인 이름에 대해 A 레코드를 설정하면, "example.com"으로 접속하는 모든 요청은 해당 도메인 이름에 대한 IP 주소로 리디렉션됩니다.

따라서 CNAME 레코드는 하나의 도메인 이름이 다른 도메인 이름을 가리키도록 지정할 때 사용되며, A 레코드는 도메인 이름을 IP 주소로 변환할 때 사용됩니다.

 

 

1. Cloudflare에 로그인하고 사이트를 생성합니다.

Websites의 메뉴에서 파란색 "Add a Site" 버튼을 클릭합니다.

 

2. 원하는 사이트 명을 적고 "Add site" 버튼을 클릭합니다.

 

3. 요금 Plan을 선택하는 화면이 나오는데 당황하지 않고 스크롤을 내려보면 Free Plan이 있습니다. Free플랜을 선택하고 "Continue" 버튼을 클릭하여 계속 진행합니다.

 

4. 이제 사이트가 완성되었습니다. 아래 파란색의 "Add record" 버튼을 클릭합니다.

5. 사용할 레코드를 입력합니다.  Name에 jenkins 라고 입력하고 IPv4 address에는 위에서 생성한 사이트주소의 서버ip주소를 입력합니다.   이렇게 입력하면 jenkins.domain.com  으로 접속하게되면 IPv4에 입력한 ip주소로 찾아가게됩니다.

 

6. jenkins.domain.com 으로 왔을 때 우리가 docker에 설치되어있는 jenkins로 가기위하여 NginxProxyManager(NPM) 에서 SSL과 Proxy를 설정해줍니다.  NPM에 로그인 후 "SSL Certificates" 메뉴를 클릭한다. "Add SSL Certificate" 버튼을 클릭한다.

7. 인증서 생성 팝업이 열리면 CloudFlare에서 등록한 도메인을 입력하고 저장한다.

 

 

8. "Dashboard" 메뉴에 진입하여 "Proxy Hosts" 를 클릭합니다.

 

9.  "Add Proxy Host" 버튼을 클릭합니다. 팝업에 jenkins.domain.com 에 대한 정보를 입력합니다. 여기서 IP주소는 docker에서 jenkins가 할당받은 ip를 입력합니다.  이후 상단의 "SSL" 탭을 선택하여 SSL정보를 입력합니다. "None"를 누르고 위에서 생성한 SSL 인증서가 나타나면 인증서를 선택하고 아래 옵션을 활성화하고 저장합니다.

 

10. 브라우저를 열어 설정한 도메인으로 잘 접속이 되는지 확인합니다.

11. 주소창의 자물쇠를 눌러 인증서관련 정보를 확인할 수 있습니다.

 

 

일반적으로 SSL 인증서는 일정 기간 후 만료됩니다. 이는 웹사이트의 보안과 안전성을 유지하기 위해 필요합니다. 그러나 수동으로 인증서를 갱신하는 것은 번거롭고 시간이 많이 소요됩니다. 또한, 만료된 인증서로 인해 웹사이트가 다운되는 경우도 있습니다.

 

하지만 nginxproxymanager에서 제공하는 SSL 인증서 자동 갱신 기능을 사용하면 이러한 문제를 해결할 수 있습니다. 이 기능을 사용하면 인증서의 만료일이 다가올 때 자동으로 갱신되므로 수동으로 갱신할 필요가 없습니다. 이를 통해 웹사이트의 보안과 안전성을 유지하면서 시간과 노력을 절약할 수 있습니다.

 

댓글