저번 시간에는 우리가 만든 인스턴스 서버 IP 주소에 도메인을 붙이고 HTTPS 구축까지 진행했다. 이번 시간에는 dev, prod로 서브 도메인을 붙이고 IP주소로 접속해도 도메인주소로 접속되게 하는 Redirection을 진행 해 볼 것이다.
필자는 dev.johns-server.shop, prod.johns-server.shop.
두개의 서브 도메인을 설정 할 것이다.
-> /var/www/html 디렉토리에 dev, prod 각각의 주소에서 보여줄 파일들을 디렉토리를 생성하여 정적 파일 생성
$ sudo vi /var/www/html/dev/index.html
$ sudo vi /var/www/html/product/index.html
-> /etc/nginx/sites-available/default 설정 파일에 들어가서 각각dev.johns-server.shop, prod.johns-server.shop에 대해 연결 해 준다.
sites-available/default파일에 들어가면 서버블록들이 있다. 우리가 johns-server.shop으로 연결하게 해주는 서버블록도 있다. 이를 참고하여 dev.johns-server.shop, prod.johns-server.shop을 열어준다.
server {
listen 80;
listen [::]:80; # 80번 포트의 요청을 받겠다
root /var/www/html/화면에 보여줄 파일이 담긴 디렉토리;
index 보여줄 파일 index.htm index.nginx-debian.html;
server_name 사이트의 도메인 주소
location / {
try_files $uri $uri/ =404;
}
if ($host = 도메인 주소) return 301 https:// 도메인 주소 #https 리다이렉트
dev와 prod 모두 위의 코드 식으로 열어 주면 된다.
-> 가비아에 접속해서 CNAME레코드를 추가해준다.
타입: CNAME -> 호스트: dev, prod -> 값: johns-server.shop.(도메인 뒤에 꼭 .을 붙여야함)
->레코드를 저장하고 dev.johns-server.shop, prod.johns-server.shop을 실행해 보면 내가 넣어준 각각의 index.html이 정상적으로 출력되는 것을 볼 수 있다.
dev.johns-server.shop
prod.johns-server.shop
-> 이제 ssl 인증을 받고 HTTPS를 구축 할 것이다.
$ sudo certbot --nginx -d dev.johns-server.shop -d prod.johns-server.shop
원래 ssl 인증을 받을 때 https의 리다이렉트도 해주고 ssl 인증서 위치를 자동으로 연결해 주는데 필자의 서버에서 렉이 있는지 그러한 과정이 실행 되지않았다. 결국 직접 /sites-available/default 파일을 수정했다.
dev와 prod에 각각의 ssl 인증 위치 넣어주기
if ($host = dev.johns-server.shop) return 301 https://dev.johns-server.shop;
if ($host = prod.johns-server.shop) return 301 https://prod.johns-server.shop;
-> 위와 같이 default 파일을 수정하고
$ nginx -t #ok받으면 nginx 재시작
$ service nginx restart
위와 같이 두 서브 도메인 모두 https로 접속이 되는 것을 알 수 있다.
위에 했던 리다이렉트와 비슷하게 서버블록을 작성해주면 된다.
server {
if($host = 13.125.93.18) {
return 301 https://johns-server.shop$request_uri;
}
listen 80;
listen [::]:80;
server_name 13.125.93.18;
return 404;
}
검색창에 IP주소를 입력해도 https://johns-server.shop 으로 접속된는 걸 볼 수 있다.