IpTime 과 같은 공유기에서 제공하는 DDNS 서비스는, 도메인 DNS 서비스를 확장한 내용 입니다. 공유기 업체의 고유한 도메인을 활용하여 사용자가 외부에서 접속할 수 있는 주소값을 제공합니다. SSL 별도 인증서를 필요로 하지 않는 http:// 주소로만 접근이 가능합니다.

하지만 소셜로그인 및 기타 다양한 기능들을 구현하기 위해서는 https:// 주소값을 필요로 하는 경우가 있어서, 이러한 2개의 주소값을 연결할 수 있다면, 서버가 새로 동작을 했을 때 변경되는 IP 주소를 개별대응하지 않아도 자동으로 연결이 가능하다는 내용을 알게 되었습니다.

DDNS 서비스 신청 및 주소 발급받기

자신이 사용하고 있는 공유기 설명서등을 참고하여, 운영중인 DDNS 주소를 발급받습니다.

도메인 DNS 레코드 입력하기

도메인 Hosting 서비스를 제공하는 업체에 가입한 뒤, 사용을 희망하는 도메인을 구매 합니다. 도메인과 서버 연결을 위한 설정값을 입력할 때 기존에는 IP Address 를 입력 했습니다. 이번에는 DDNS 주소값을 입력할 예정이기 때문에 입력값 유형 으로는 CNAME 을 선택하고, 이름 에는 www 값을 입력 합니다.

그리고 에는 앞에서 정의한 DDNS 주소값을 입력하면 설정을 완료하게 됩니다.

CertBot 설정값 변경하기

운영중인 서버의 주소값이 변경되지 않았다면 불필요한 절차 입니다. https://domain.com => https://www.domain.com 으로 주소가 변경 된 경우에는 새로운 주소값으로 재발급 해야 합니다. 다음의 내용은 기존에 발급받은 인증서를 삭제하고 삭제한 내용을 확인하는 과정 입니다.

$ sudo certbot delete
$ sudo certbot certificates                 
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No certificates found.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

인증서를 삭제 하더라도, Nginx 설정값이 그대로 남아있습니다. 때문에 $ sudo nvim /etc/nginx/sites-enabled/default 내용을 수동으로 제거해야 합니다. 제거를 한 뒤 server_name 값에 변경된 주소값으로 내용을 변경해야 합니다. 이처럼 설정작업을 위한 준비를 완료한 뒤 인증서 재발급 작업을 진행하면 됩니다.

$ sudo certbot --nginx                      
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for www.domain.com

This certificate expires on 2024-05-14.

Non WWW redirect to WWW

도메인만 주소로 입력하면 자동으로 https://www.도메인.계정 으로 redirect 되는 경우가 많이 있어서 이 부분을 적용하려고 알아보았습니다. 앞의 내용들을 적용하고 나면 https://domain.com 주소에 응답을 하는 서버가 없어 해당주소에 접속하면 아래와 같은 오류 메세지를 출력합니다.

This site can’t be reached

domain.com’s server IP address could not be found.
Try:

Checking the connection
Checking the proxy, firewall, and DNS configuration
ERR_NAME_NOT_RESOLVED

AWS 등의 고정IP 를 활용하는 경우에는 2개의 주소값 을 동일한 서버로 입력한 뒤, Nginx 설정값으로 redirect 가능하도록 내용을 추가하면 됩니다. Nginx no-www to www and www to no-www

Hosting.kr 에서 non-www 주소와 www 연결 24년 3월 8일 Update

도메인 구매를 hosting.kr에서 하고 있습니다. 고객센터에 문의한 결과 CNAME(Alias) 레코드 등록하기 추가 설정을 활용하면 동일한 서버에서 2개의 주소값을 할당할 수 있습니다. 할당을 하고난 뒤, 앞에서 추가한 Nginxnon www recirect to www 설정값을 통해 자동으로 www 주소값으로 이동하게 됩니다.


참고사이트