Sub Domain, Redirection

김민준·2021년 12월 2일
0

라이징캠프 2주차

목록 보기
8/8
post-custom-banner

저번 시간에는 우리가 만든 인스턴스 서버 IP 주소에 도메인을 붙이고 HTTPS 구축까지 진행했다. 이번 시간에는 dev, prod로 서브 도메인을 붙이고 IP주소로 접속해도 도메인주소로 접속되게 하는 Redirection을 진행 해 볼 것이다.


Sub Domain

  • 서브 도메인이란? : 주가 되는 도메인의 하위 도메인이다. 예를 들어 네이버 블로그를 접속하면 blog.naver.com, 네이버 검색엔진을 사용하면 search.naver.com 처럼 하나의 도메인에 부속품이 되는 도메인을 말한다.

필자는 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;
  • return 301 : 301은 http status code에서 영구 이동을 의미함. 즉, 당신이 접속하려는 사이트가 영구 이동했으니 리다이렉트 사이트로 이동하라의 의미

-> 위와 같이 default 파일을 수정하고

$ nginx -t	#ok받으면 nginx 재시작
$ service nginx restart



위와 같이 두 서브 도메인 모두 https로 접속이 되는 것을 알 수 있다.


IP 주소 -> 도메인 주소

위에 했던 리다이렉트와 비슷하게 서버블록을 작성해주면 된다.

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 으로 접속된는 걸 볼 수 있다.

profile
기록하는 개발자가 되자
post-custom-banner

0개의 댓글