Nginx๋ ์ํ์น, IIS์ ๊ฐ์ ์น ์๋ฒ ์ํํธ์จ์ด์ ๋๋ค. ๊ฐ๋ณ๊ณ ๋์ ์ฑ๋ฅ์ ๋ชฉํ๋ก ํ๊ณ ์์ผ๋ฉฐ ์ต๊ทผ ๋ค์ด์ ์ํ์น ๋ค์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ์๋ฒ์ ๋๋ค. ๋ค๋ฅธ ์๋ฒ๋ค๊ณผ ์ฐจ์ด์ ์ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ์ํ์น ์๋ฒ๊ฐ ์ค๋ ๋/ํ๋ก์ธ์ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ๋์กฐ์ ์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ์๋ฒ์ ๋ง์ ๋ถํ๊ฐ ๋ฐ์ํ์ ๋ ์ฑ๋ฅ์ ์์ธกํ๊ธฐ ์ฝ๊ฒ ํฉ๋๋ค.
์ํค๋ฐฑ๊ณผ ์ฐธ์กฐ
https://ko.wikipedia.org/wiki/Nginx
Nginx๋ฅผ ์ฌ์ฉํ ์ด์ ๋ https ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ ๋๋ค. Nginx๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ํ์ง๋ง ํด๋น ๋ฐฉ๋ฒ์ ๋ฌ์ 18๋ฌ๋ฌ์ ํด๋นํ๋ ๋น์ฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์๋น์ค๊ฐ ๋ง์ด ์ฌ์ฉ ๋๊ฒ๋๋ฉด ๊ณ ๋ คํด์ผ ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง Nginx๋ ๋ฌด๋ฃ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์ ์ฌ์ฉํ๊ธฐ ์ข๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
Nginx๋ฅผ EC2์ ์ค์นํ๋ ๋ฐฉ๋ฒ
yum install nginx -y
# nginx๋ฅผ ์ค์นํ๋ค.
nginx -v
# ์ค์น๋ nginx ๋ฒ์ ํ์ธ
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์นํ ์ ์์ผ๋ ec2์์ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. error๊ฐ ๋ฐ์ํ๋ฉด ํน์ ๋ช ๋ น์ด ์ฌ์ฉ์ ์ถ์ฒํด์ฃผ๋๋ฐ ํด๋น ๋ฐฉ์์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
HTTPS (Hypertext Transfer Protocol Secure) is the update to HTTP that uses the SSL/TLS protocol to provide security for connections between web browsers and web servers. Using HTTPS normally requires a certificate from a certificate authority, such as Letโs Encrypt, and will also require installing that certificate onto a web server. Certbot can help perform both of these steps automatically in many cases. HTTPS is an Internet standard and is normally used with TCP port 443.
from https://certbot.eff.org/pages/help
์ ์ง๋ฌธ์ Certbot์์ ๊ฐ์ ธ์์ต๋๋ค. Https์ ๋ํ ์ค๋ช ๋ ํฌํจ๋์ด์๋๋ฐ, HTTPS๋ HTTP์ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ผ๋ก ์น ํด๋ผ์ด์ธํธ์ ์น ์๋ฒ๊ฐ์ ๋ณด์ ์ฐ๊ฒฐ์ ์ง์ํ๊ธฐ์ํด SSL/TLS ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค. HTTPS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Letโs Encrypt ์ ๊ฐ์ ์ธ์ฆ ๊ธฐ๊ด์ ์ธ์ฆ์๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์น ์๋ฒ๋ ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋๋ฅผ ํด์ผํฉ๋๋ค. Certbot์ ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ค๋๋ค. HTTPS๋ ์ธํฐ๋ท ํ์ค์ด๊ณ ์ผ๋ฐ์ ์ผ๋ก TCP port 443์ ์ฌ์ฉํฉ๋๋ค.
๋ฌด๋ฃ๋ก SSH ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ํด ์ฌ์ฉํฉ๋๋ค.
Certbot์ ์ค์นํ๋ ๋ฐฉ๋ฒ
$ sudo apt-get update
$ sudo apt-get install letsencrypt -y
์์๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์นํ ์ ์์ง๋ง ec2์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ถ์ฒ ๋ช ๋ น์ด๊ฐ ์๋ค๋ฉด ํด๋น ๋ช ๋ น์ด๋ก ์ค์นํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ธ์ฆ์๋ฅผ ์ฌ๋ฐ๊ธ ๋ฐ๊ธฐ์ํด์ nginx๊ฐ 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ค์ง ์์ผ์ค๋๋ค.
$ sudo systemctl stop nginx
์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ๊ธฐ
# sudo letsencrypt certonly --standalone -d [๋๋ฉ์ธ ์
๋ ฅ] // www.example.com
์ธ์ฆ์ ๋ฐ๊ธ์ ์ ์ฒญํ๊ณ ๋ํ๋๋ ์ง๋ฌธ์์ ์ด๋ฉ์ผ์ ๋ฑ๋กํ๊ณ ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ณด์๊ณ y๋ฅผ ๋๋ฅด๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋์ ๊ฒฝ๋ก์ ์ธ์ฆ์ ํค๋ฅผ ๋ฐ์๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
/etc/letsencrypt/live/๋๋ฉ์ธ/fullchain.pem
/etc/letsencrypt/live/๋๋ฉ์ธ/privkey.pem
Nginx๋ฅผ ์ค์ ํ๊ธฐ ์ํด์ ์ค์ ํ์ผ์ด ๋ด๊ธด ์์น๋ก ์ด๋ํฉ๋๋ค.
nginx๋ ๋ฃจํธ ๊ฒฝ๋ก์์ etc/nginx ํด๋์ ์กด์ฌํฉ๋๋ค.
ํด๋น ๊ฒฝ๋ก์์ nginx.conf ํ์ผ์์ server ๋ถ๋ถ์ ์๋์ ๊ฐ์ด ์ธํ ํฉ๋๋ค.
server {
listen 80;
listen [::]:80;
server_name ๋์๋๋ฉ์ธ;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/๋์๋๋ฉ์ธ/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/๋์๋๋ฉ์ธ/privkey.pem;
server_name ๋์ ๋๋ฉ์ธ;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
} 81,0-1 6 1,1 Top
์คํฌ๋ฆฝํธ ํด์
์ ์คํฌ๋ฆฝํธ์ ์๋ฏธ๋ http ํ๋กํ ์ฝ 80 ํฌํธ๋ก ์ ์ํ ์ ์ ๋ฅผ https ํ๋กํ ์ฝ๋ก ์ฌ์ ์ ์ํค๊ณ https ํ๋กํ ์ฝ 443 ํฌํธ๋ก ์ ์ํ ์ ์ ์๊ฒ 8080ํฌํธ์ ์ด๋ ค์๋ ์๋ฒ๋ก ์ด๋ ์ํฌ ์ ์๋๋ก ํ ์ ์๋๋ก ํฉ๋๋ค. httpsํ๋กํ ์ฝ์ ์ฌ์ฉํ ๊ฒฝ์ฐ certbot์ผ๋ก ์์ฑํ pem ํค๋ฅผ ํตํด ์ธ์ฆ์ ์งํํฉ๋๋ค.
์์๊ฐ์ด ์ธํ ์ด ๋์๋ค๋ฉด, ์ด์ nginx๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น์ด
# ์์
sudo nginx
# ๋น ๋ฅธ ์ข
๋ฃ
sudo nginx -s stop
# ์ ์ ์ข
๋ฃ
sudo nginx -s quit
# ์ฌ์์
sudo nginx -s restart
# ๋ค์ ๋ก๋
sudo nginx -s reload
์ ๋ช ๋ น์ด๋ค์ nginx ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ค์ด๋ค. ํ์ง๋ง ์๋ฒ๋ฅผ ์ฌ๋ถํ ํ ๊ฒฝ์ฐ ๋ค์ ์์์์ผ์ฃผ์ด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์กด์ฌํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ systemctl์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฒ๊ฐ ์ฌ๋ถํ ๋์ด๋ ์์ฐ์ค๋ฝ๊ฒ nginx๋ฅผ ๋ค์ ์คํ์์ผ ์ค ์ ์๋ค.
systemctl์ ์ฌ์ฉํ ๋ช ๋ น์ด
# Nginx ์์ ๋ฐ systemctl์ ๋ฑ๋ก
sudo systemctl start nginx
#Nginx ์ค์ง
sudo systemctl stop nginx
# Nginx ์ฌ์์
sudo systemctl restart nginx
# Nginx ๋ค์ ๋ก๋
sudo systemctl reload nginx
์ฐธ์กฐ