'dev.9yujin.shop' ๊ทธ๋ฆฌ๊ณ 'prod.9yujin.shop' ์ด๋ ๊ฒ ๋ ๊ฐ์ ์๋ธ ๋๋ฉ์ธ์ ๋ง๋ค์ด๋ณด์.
1. ๊ฐ๋น์ DNS ๋ ์ฝ๋ ์์
๊ฐ๋น์์์ ๋จผ์ CNAME์ผ๋ก ์๋ฒ ๋๋ฉ์ธ์ ๋ฑ๋กํด์ค๋ค. dev์ prod ๋๊ฐ๋ฅผ ์์ฑํ๋ค.
2. ์๋ธ๋๋ฉ์ธ ํ์ด์ง ์ ์ ํ์ผ ์์ฑ
1) ์๋ธ๋๋ฉ์ธ์ผ๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ณด์ฌ์ค ํ์ผ๋ค์ ๋ฃ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
๊ธฐ์กด /var/www/html
์ ์ถ๊ฐ๋ก /var/www/dev
๊ณผ /var/www/prod
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์๋ค.
2) /var/www/dev์ html ํ์ผ์ ์์๋ก ์์ฑํด์ค๋ค.
<html>
<head>
<title>dev-test</title>
</head>
<body>
<h1>hello dev-subdomain</h1>
</body>
<html>
3. Nginx ์ค์ 1
1) /etc/nginx/sites-available
๋๋ ํ ๋ฆฌ์ ์๋ธ๋๋ฉ์ธ์ ์ํ ์ค์ ํ์ผ์ ๋ง๋ค์ด ์ฃผ์๋ค.
server {
listen 80;
listen [::]:80;
root /var/www/dev;
index index.html index.htm index.nginx-debian.html;
server_name dev.9yujin.shop;
location / {
try_files $uri $uri/ =404;
}
return 301 https://dev.9yujin.shop$request_uri;
}
์ผ๋จ์ ์ด๋ ๊ฒ๋ง ์์ฑํ๋ค. root
๋ฅผ dev์ ์ ์ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ง์ ํด์ฃผ์๋ค.
2) /sites-enabled
๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฐ๊ฒฐํ๋ค.
ln -s etc/nginx/sites-available/dev etc/nginx/sites-enabled
4. ์ธ์ฆ์ ๋ฐ๊ธ
1) ์๋์ ๋ช ๋ น์ด๋ก nginx ์ค์ ์ ์ ์ธํ๊ณ ์ธ์ฆ์๋ง ๋ฐ๋ก ๋ฐ๊ธ ๋ฐ์ ์ ์๋ค.
sudo certbot certonly -d [xxx.example.com] -d [yyy.example.com]
2) ์๋์ ๊ฐ์ ์ง๋ฌธ์ด ๋์จ๋ค. 2๋ฒ์ ๊ณ ๋ฅธ๋ค. (์น์๋ฒ ์ค์ ์ด ์งํ๋์ง ์๊ณ ์ธ์ฆ์๋ง ๋ฐ๊ธ๋ฐ๋ ์ต์ ์ธ๋ฏ)
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nginx Web Server plugin (nginx)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 2
3) ์ธ์ฆ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ๊ธ์ด ๋๊ณ , pem ํค์ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค๋ค.
`-d`์ต์ ์ผ๋ก ํ๋ฒ์ ์ฌ๋ฌ ๋๋ฉ์ธ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ ๋ฐ์ ์ ์์ ์ค ์์์ง๋ง, ์ค์ ๋ก ํด๋ณด๋ ๋ง์ง๋ง์ ์ ๋ ฅํ ๋๋ฉ์ธ์๊ฒ๋ง ๋ฐ๊ธ์ด ๋์๋ค.
`*.9yujin.shop` ์ ์ ๋ ฅํ๋ฉด ๋ชจ๋ ์๋ธ๋๋ฉ์ธ์ ์ ์ฉ๋ ์ค ์์์ง๋ง, ๋ช ๋ น์ด๊ฐ ์คํ๋์ง ์๋๋ค.
5. Nginx ์ค์ 2
์ฒ์์ ๋ฉ์ธ ๋๋ฉ์ธ์ https ์ ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
1) /sites-available/dev
์ ๋ค์์ ์ถ๊ฐํด์ค๋ค.
server {
listen 443 ssl; # managed by Certbot
root /var/www/dev;
server_name dev.9yujin.shop;
ssl_certificate /etc/letsencrypt/live/dev.9yujin.shop/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dev.9yujin.shop/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
์๋ฒ๋ธ๋ก์ ํ๋ ๋ ๋ง๋ค์ด์ 443๋ฒ ํฌํธ๋ฅผ ์ด์ด๋๊ณ , ๋ฐ๊ธ๋ฐ์ pem key์ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ค๋ค.
(14๋ฒ ๊ณผ์ ์์ certbot --nginx
๋ช
๋ น์ด๊ฐ ์๋์ผ๋ก ํด์ค ์์
)
2) 80๋ฒ ํฌํธ๋ก ๋ค์ด์์ ๋ : https๋ก ๋ฆฌ๋ค์ด๋ ํธ ์์ผ์ค๋ค.
server {
listen 80;
listen [::]:80;
root /var/www/prod;
index index.html index.htm index.nginx-debian.html;
server_name prod.9yujin.shop;
location / {
try_files $uri $uri/ =404;
}
return 301 https://prod.9yujin.shop$request_uri;
}
๐จ [210108]
์ธ์ฆ์๋ฅผ ๋ฐ๊ณ confํ์ผ์ ์์ ํ ๋ ์์ฒ๋ผ ์ํด๋ ๋๊ณ ..
certbot์์ ๋ง๋ค์ด์ฃผ๋ ์๋ฒ๋ธ๋ก ๋๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ๋๋ค. ์์ ๊ธฐ๋ณธ์ผ๋ก ์๋ ๊ฒ(default์ ์๋) ๋ค ์ง์๋ ๋ฌด๋ฐฉ.