Web Server
Overview
์น ์๋ฒ๋ HTTP ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ์น ํ์ด์ง๋ฅผ ์ ๊ณตํด์ค๋ค.
์์ผ๋ก ์ค์นํ ์ํํธ์จ์ด๋ค์ ์น ํ์ด์ง์ ์ ์ํ๊ธฐ ์ํด ์น ์๋ฒ๋ฅผ ์ค์นํด์ผ ํ๋ค. ์น ์๋ฒ๋ nginx(์์ง์์ค)๋ฅผ ๊ณจ๋๋ค. ์์ ์ apache๋ก ๋ง์ด ์ค์นํ๋๋ฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๊ณ ์ถ๊ฐ๋๋ฉด์ ๋ฌด๊ฑฐ์์ก๋ค. nginx๋ apache์์ ๋๋ฆฌ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ง ๋ชจ์ ๊ฐ๋ฐ๋์๋ค. ์ฆ apache๋ ํ์กดํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ง๋ง ๋ฌด๊ฒ๊ณ nginx๋ ๋จ์ํ๋ฉด์๋ ์ฑ๋ฅ์ด ์ข๋ค.
2018๋ 11์์ nginx๊ฐ apache์ ๋ง์ผ ์ ์ ์จ์ ์ฌ์ณค๋ค.
Nginx ์ค์น
$ sudo apt-get install nginx์ค์น๋ nginx๋ฅผ ํ์ธํ๋ค.
$ nginx -v
nginx version: nginx/1.14.0 (Ubuntu)๋ฐฉํ๋ฒฝ ์ค์
$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
$ sudo netfilter-persistent save
$ sudo netfilter-persistent reloadHTTP์ ๊ธฐ๋ณธ ํฌํธ์ธ 80๋ฒ ํฌํธ์ HTTPS์ 443๋ฒ ํฌํธ์ ์ ๊ทผ์ ํ์ฉํ๋๋ก ํ๋ค.
์๋ฒ๋ธ๋ก ์ค์
Apache์ VirtualHost๊ฐ ์๋ค๋ฉด Nginx์๋ Server Block์ด ์๋ค. Server Block์ ํ๋์ ๋จธ์ ์์ ์ฌ๋ฌ๊ฐ์ ์น ์ฌ์ดํธ๋ฅผ ์ด์ํ ์ ์๊ฒ ํด์ค๋ค.
Server Block ํ์ผ์ /etc/nginx/sites-available์ ์ ์ฅํ๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ ๋ง ๊ทธ๋๋ ์ฌ์ฉ๊ฐ๋ฅํ ์๋ฒ๋ธ๋ก๋ค์ ์ ์ฅํ๋ ๊ฒฝ๋ก์ด๊ณ , ์ค์ ๋ก ์น ์ฌ์ดํธ๋ฅผ ํ์ฑํ์ํค๊ธฐ ์ํด์ /etc/nginx/sites-enabled์ ๋งํฌ์์ผ๋์ผ ํ๋ค.
์ด ํฌ์คํธ์์๋ ์๋ฒ๋ธ๋ก์ ๋ง๋ค๊ณ ์๋น์คํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค.
nginx๋ฅผ ์ค์นํ๋ฉด default๋ผ๋ ์๋ฒ๋ธ๋ก ์ค์ ํ์ผ์ด ์กด์ฌํ๋ค. default ์๋ฒ๋ธ๋ก์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ฏ๋ก /etc/nginx/sites-enabled์ ๋งํฌ๋์ด์๋ defaultํ์ผ์ ์ง์ด๋ค.
์๋ก์ด ์๋ฒ๋ธ๋ก ์ค์ ํ์ผ์ ๋ง๋ ๋ค. /etc/nginx/sites-available์ ์์ฑํ๋ ํ์ผ๋ช
์ ์์ ์ ๋๋ฉ์ธ์ด example.com์ด๋ผ๋ฉด example.com ์ด๋ผ๊ณ ์ด๋ฆ์ง๋ ๊ฒ์ ์ถ์ฒํ๋ค.
/etc/nginx/sites-available/example.com ํ์ผ์ ์ด์ด ์๋ ๋ด์ฉ์ ์ถ๊ฐํ๋ค.
์๋ ๋ด์ฉ์ ๊ทธ๋๋ก ์
๋ ฅํ๋ค. default_server๋ ํด๋น ํฌํธ์ ๋ํ ๊ธฐ๋ณธ ์ ์ ์๋ฒ๋ธ๋ก์ ๋ช
์ํ๋ ๊ฒ์ด๋ค. ๋๋ฉ์ธ์ด ๋ช
์๋์ด ์์ง์๋ค๋ฉด ๊ธฐ๋ณธ ์๋ฒ๋ธ๋ก์ผ๋ก ํฅํ๊ฒ ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ ์๋ฒ์ IP์ฃผ์ ํน์ ํธ์คํธ๋ช
example.com ์ผ๋ก ์ ์ํ๋ค๋ฉด /var/www/example.com/htdocs ์์ index.html์ด ๋ถ๋ ค์ง ๊ฒ์ด๋ค.
VIM์์ example.com์ ์์ ์ ๋๋ฉ์ธ์ผ๋ก ์นํ์ :%s/example.com/yourdomain.com/gi ์ผ๋ก ํ ์ ์๋ค.
:wq๋ก ์ ์ฅ ํ ์ข
๋ฃํ๋ค.
์๋ฒ๋ธ๋ก์ index ํ์ด์ง ์์ฑ
์น ์ฌ์ดํธ์ root ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ index ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋๋๋ค.
index ํ์ด์ง๋ฅผ ์์ฑํ๋ค.
์๋ ๋ด์ฉ์ ์ ๋ ฅํ ํ ์ ์ฅ ํ ์ข ๋ฃํ๋ค.
๊ถํ์ ๋ณ๊ฒฝํ์ฌ ๋ณด์์ฑ์ ๋์ธ๋ค.
์๋ฒ๋ธ๋ก ํ์ฑํ
ํด๋น ์๋ฒ๋ธ๋ก์ ํ์ฑํ์ํค๊ธฐ ์ํด ๋งํฌ๋ฅผ ๊ฑธ์ด์ค๋ค.
nginx -t ๋ช
๋ น์ ํตํด ์ค์ ์ ์ด์์ด ์๋์ง ํ์ธํ ์ ์๋ค.
์ด์์ด ์๋ค๋ฉด nginx๋ฅผ ์ฌ์์ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์์ ์ ์น ์ฌ์ดํธ์ ์ ์์ด ๋๋์ง ํ์ธํด๋ณธ๋ค.
HTTPS ํ์ฑํ
HTTPS ํต์ ์ ์ํด์ SSL/TLS ์ธ์ฆ์ ๋ฐ๊ธ์ด ํ์ํ๋ค. ์์ ๊ธ์์ SSL/TLS ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด์ฃผ๋ Letโs Encrypt ์์ SSL/TLS ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์๋ค.
DH Param ํค ์์ฑ
TLS ํ๋กํ ์ฝ ์์ฒด์ ๊ธฐ๋ณธ ์ค๊ณ์ ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ฏ๋ก TLS์ฉ ๋ํผ-ํฌ๋ง ํค๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ์ ์์ ์ฑ์ ๋์ธ๋ค.
/etc/nginx/sites-available/example.com ํ์ผ์ ์ด์ด ๋ชจ๋ ๋ด์ฉ์ ์ญ์ ํ๊ณ ์๋ ๋ด์ฉ์ ์
๋ ฅํด์ค๋ค.
์ค์ ์ https://mozilla.github.io/server-side-tls/ssl-config-generator/ ๊ณผ https://gist.github.com/jult/395ad9fd3e9773a54a67aaf689beab27 ๋ฑ์ ์ฐธ๊ณ ํ์๋ค.
ssl_protocols์ TLSv1.2๋ง ํ์ฉํ๋๋ฐ TLSv1.1์ดํ๋ ๋ณด์์ ์ทจ์ฝํด์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๊ถ๊ณ ํ๊ณ ์๋ค. resolver๋ ์ธ์ฆ์ ๋ฐ๊ธ์
์ฒด์ ํต์ ํ๋ ๋ค์์๋ฒ์ด๋ค. ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ๋ค์์๋ฒ๋ก ์
ํ
ํด ์ฃผ์๋ค.
์ค์ ์ด ๋๋ฌ์ผ๋ฉด nginx -t๋ฅผ ํตํด ๋ฌธ๋ฒ๊ฒ์ฌ๋ฅผ ํ๊ณ ์ฌ์์ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ก http://exsample.com ์ ์ ์ํ๋ฉด ์๋์ผ๋ก https://exsample.com ๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋ค.
์ธ์ฆ์ ๊ฐฑ์ ํ nginx ์ฌ์์
Letโs Encrypt ์์ ๋ฐ๊ธ๋ฐ๋ ์ธ์ฆ์์ ๊ฒฝ์ฐ ์ ํจ๊ธฐ๊ฐ์ด 90์ผ์ด๊ณ ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํ๋๋ก cronjob์ ๋ฑ๋ก๋์ด ์๋ค. ์ธ์ฆ์๊ฐ ๊ฐฑ์ ๋๋ฉด nginx๋ฅผ ์ฌ์์ํด์ฃผ์ด์ผ ํ๋ค.
/etc/letsencrypt/renewal-hooks/deploy/01-reload-nginx ํ์ผ์ ์ฐ๋ค.
์๋ ๋ด์ฉ์ ์ ๋ ฅํ๊ณ ์ ์ฅ ํ ์ข ๋ฃํ๋ค.
์คํ ๊ถํ๋ ์ถ๊ฐํ๋ค.
์ด์ certbot์ ์ํด ์ธ์ฆ์๊ฐ ๊ฐฑ์ ๋๋ฉด 01-reload-nginx ๊ฐ ์คํ๋๋ฉด์ nginx๊ฐ ์ฌ์์๋ ๊ฒ์ด๋ค.
Last updated