본문 바로가기

IT

[AWS EC2]Ubuntu18.04 nginx서브도메인,도메인 https 적용

도메인, 서브도메인의 https와 파일적용이 안 되는 등 문제가 많을 수 있다.

 

2021/02/08 - [백엔드] - [ubuntu]nginx let's encrypt로 https적용

특히 이걸 따라했다면,

하나의 도메인은 상관 없지만 서브도메인이면 좀 문제가 있음을 알 수 있다.

하나는 https가 잘 되지만 서브도메인은 https가 되는데 해당 내용이 안 보인다던가

하나는 https도 다 잘 되는데 그 안의 index.php나 index.html 내용이 제대로 뜨지 않음이 보일 수 있다.

 

그럼 같이 뒤엎어보자.

일단 다들 접속하려는 도메인/~.pem파일을 다뤘다는 건 잘 알 것 같다.

'jang.shop/fullchain.pem;' 이런 식으로!

 

$ sudo certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem

$ sudo service nginx restart

 

만약 도메인이 jang.shop이라면,

${YOUR_DOMAIN} 대신 jang.shop을 넣으면 된다.

 

만약 restart했는데 에러가 났다면,

삭제하려는 도메인의 pem이 사용되고 있을 확률이 높다.

sites-available 안의 내용물에서 pem이 사용되고 있는지 확인해보면 된다.

 

sudo certbot revoke~로

발급받은 pem 파일을 그냥 다 지워준다.

 

 

*아래는 선택*

 

$sudo ufw status
inactive
sudo ufw enable
sudo ufw default deny

And I then do:

sudo iptables -L
sudo ufw status

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

sudo ufw allow 'OpenSSH'

 

 

**여기부터 시작**

 

만약 pem파일의 cert를 다 삭제했다면,

 

sudo certbot certonly --nginx -d [원하는 서브도메인 또는 도메인 ex)dev.jang.shop]

으로 발급 받아준다.

 

/etc/nginx/sites-available$ ll
total 24
drwxr-xr-x 2 root root 4096 Feb  5 17:05 ./
drwxr-xr-x 8 root root 4096 Feb  5 17:04 ../
-rw-r--r-- 1 root root  529 Feb  5 17:05 casey-test.jang.shop
-rw-r--r-- 1 root root  489 Feb  5 17:03 dev.jang.shop
-rw-r--r-- 1 root root  594 Feb  5 17:00 jang.shop
-rw-r--r-- 1 root root  505 Feb  5 17:04 prod.jang.shop

 

나는 서브도메인을 3개를 만들어놨다.

그래서 sudo certbot ~ -d [도메인] 이 명령어를 총 4개 쳐줬다.

-> 서브 도메인이 3개고 도메인이 하나니까.

 

그 다음,

sites available에서 default를 없애되 다른 곳에 내용을 저장해두고,

저렇게 원하는 도메인의 설정파일을 만들어주었다.

 

 

dev를 예시로 보자.

 

/etc/nginx/sites-available/dev.jang.shop

server {
        listen 80;
        listen [::]:80;

        root /var/www/dev.jang.shop/html;
        index index.html index.htm;

        server_name dev.jang.shop;

        location / {
                try_files $uri $uri/ =404;
        }

        listen [::]:443;
        ssl on;
         listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/dev.jang.shop/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/dev.jang.shop/privkey.pem;
}

 

그럼 안에 넣을 index.html을 구성하자.

 

ubuntu@111-111-123-111:/etc/nginx/sites-available$ cd /var/www
ubuntu@111-111-123-111:/var/www$ ls
casey-test.h3yon-bunjang.shop  dev.jang.shop  jang.shop  html  prod.jang.shop
ubuntu@111-111-123-111:/var/www$ cd dev.jang.shop/
ubuntu@111-111-123-111:/var/www/dev.jang.shop$ ls
html
ubuntu@111-111-123-111:/var/www/dev.jang.shop$ cd html
ubuntu@111-111-123-111:/var/www/dev.jang.shop/html$ ls
index.html
ubuntu@111-111-123-111:/var/www/dev.jang.shop/html$ sudo vi index.html

<html>
    <head>
        <title>Welcome to dev</title>
    </head>
    <body>
        <h1>Success!  The dev.jang.shop server block is working!</h1>
    </body>
</html>

 

그럼 이제 nginx 서버를 재시작해준다.

 

sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

이것도 해주어야 한다.

 

ubuntu@111-111-123-111$ sudo service nginx restart