Web Server

Overview

์›น ์„œ๋ฒ„๋Š” HTTP ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›น ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค.

์•ž์œผ๋กœ ์„ค์น˜ํ•  ์†Œํ”„ํŠธ์›จ์–ด๋“ค์˜ ์›น ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์›น ์„œ๋ฒ„๋Š” nginx(์—”์ง„์—‘์Šค)๋ฅผ ๊ณจ๋ž๋‹ค. ์˜ˆ์ „์—” apache๋กœ ๋งŽ์ด ์„ค์น˜ํ–ˆ๋Š”๋ฐ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ณ  ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋ฌด๊ฑฐ์›Œ์กŒ๋‹ค. nginx๋Š” apache์—์„œ ๋„๋ฆฌ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ๋งŒ ๋ชจ์•„ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ์ฆ‰ apache๋Š” ํ˜„์กดํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌด๊ฒ๊ณ  nginx๋Š” ๋‹จ์ˆœํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

2018๋…„ 11์›”์— nginx๊ฐ€ apache์˜ ๋งˆ์ผ“ ์ ์œ ์œจ์„ ์žฌ์ณค๋‹ค.arrow-up-right

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 reload

HTTP์˜ ๊ธฐ๋ณธ ํฌํŠธ์ธ 80๋ฒˆ ํฌํŠธ์™€ HTTPS์˜ 443๋ฒˆ ํฌํŠธ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์„œ๋ฒ„๋ธ”๋ก ์„ค์ •

Apache์— VirtualHost๊ฐ€ ์žˆ๋‹ค๋ฉด Nginx์—๋Š” Server Blockarrow-up-right์ด ์žˆ๋‹ค. 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.comarrow-up-right์ด๋ผ๋ฉด example.comarrow-up-right ์ด๋ผ๊ณ  ์ด๋ฆ„์ง“๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

/etc/nginx/sites-available/example.com ํŒŒ์ผ์„ ์—ด์–ด ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์•„๋ž˜ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•œ๋‹ค. default_server๋Š” ํ•ด๋‹น ํฌํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ ‘์† ์„œ๋ฒ„๋ธ”๋ก์„ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋„๋ฉ”์ธ์ด ๋ช…์‹œ๋˜์–ด ์žˆ์ง€์•Š๋‹ค๋ฉด ๊ธฐ๋ณธ ์„œ๋ฒ„๋ธ”๋ก์œผ๋กœ ํ–ฅํ•˜๊ฒŒ ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™ˆ ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ํ˜น์€ ํ˜ธ์ŠคํŠธ๋ช… example.comarrow-up-right ์œผ๋กœ ์ ‘์†ํ•œ๋‹ค๋ฉด /var/www/example.com/htdocs ์•ˆ์˜ index.html์ด ๋ถˆ๋ ค์งˆ ๊ฒƒ์ด๋‹ค.

VIM์—์„œ example.comarrow-up-right์„ ์ž์‹ ์˜ ๋„๋ฉ”์ธ์œผ๋กœ ์น˜ํ™˜์€ :%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/arrow-up-right ๊ณผ https://gist.github.com/jult/395ad9fd3e9773a54a67aaf689beab27arrow-up-right ๋“ฑ์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.

ssl_protocols์— TLSv1.2๋งŒ ํ—ˆ์šฉํ–ˆ๋Š”๋ฐ TLSv1.1์ดํ•˜๋Š” ๋ณด์•ˆ์— ์ทจ์•ฝํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์„ ๊ถŒ๊ณ ํ•˜๊ณ  ์žˆ๋‹ค. resolver๋Š” ์ธ์ฆ์„œ ๋ฐœ๊ธ‰์—…์ฒด์™€ ํ†ต์‹ ํ•˜๋Š” ๋„ค์ž„์„œ๋ฒ„์ด๋‹ค. ๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” ๋„ค์ž„์„œ๋ฒ„๋กœ ์…‹ํŒ…ํ•ด ์ฃผ์—ˆ๋‹ค.

์„ค์ •์ด ๋๋‚ฌ์œผ๋ฉด nginx -t๋ฅผ ํ†ตํ•ด ๋ฌธ๋ฒ•๊ฒ€์‚ฌ๋ฅผ ํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋กœ http://exsample.comarrow-up-right ์— ์ ‘์†ํ•˜๋ฉด ์ž๋™์œผ๋กœ https://exsample.comarrow-up-right ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋œ๋‹ค.

์ธ์ฆ์„œ ๊ฐฑ์‹  ํ›„ nginx ์žฌ์‹œ์ž‘

Letโ€™s Encrypt ์—์„œ ๋ฐœ๊ธ‰๋ฐ›๋Š” ์ธ์ฆ์„œ์˜ ๊ฒฝ์šฐ ์œ ํšจ๊ธฐ๊ฐ„์ด 90์ผ์ด๊ณ  ์ž๋™์œผ๋กœ ์ธ์ฆ์„œ๋ฅผ ๊ฐฑ์‹ ํ•˜๋„๋ก cronjob์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค. ์ธ์ฆ์„œ๊ฐ€ ๊ฐฑ์‹ ๋˜๋ฉด nginx๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

/etc/letsencrypt/renewal-hooks/deploy/01-reload-nginx ํŒŒ์ผ์„ ์—ฐ๋‹ค.

์•„๋ž˜ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅ ํ›„ ์ข…๋ฃŒํ•œ๋‹ค.

์‹คํ–‰ ๊ถŒํ•œ๋„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด์ œ certbot์— ์˜ํ•ด ์ธ์ฆ์„œ๊ฐ€ ๊ฐฑ์‹ ๋˜๋ฉด 01-reload-nginx ๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ nginx๊ฐ€ ์žฌ์‹œ์ž‘๋  ๊ฒƒ์ด๋‹ค.

Last updated