๊ณ ์ฑ๋ฅ, ๋ณด์, ํ์ค ์ค์ ๋ฐ ๊ตฌ์ฑ ์ ์ฐ์ฑ์ ๊ฒฐํฉํ๋ ค๋ ๊ฒฝ๋ http ์๋ฒ lighttpd 1.4.65๊ฐ ์ถ์๋์์ต๋๋ค. Lighttpd๋ ๋ถํ๊ฐ ๋์ ์์คํ ์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ๋ฉฐ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ์๋น๋ฅผ ๋ชฉํ๋ก ํฉ๋๋ค. ์ ๋ฒ์ ์๋ 173๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ฃผ์ ํ์ :
- HTTP/2๋ฅผ ํตํ WebSocket์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, HTTP/8441 ์ฐ๊ฒฐ ๋ด์ ๋จ์ผ ์ค๋ ๋์์ WebSocket ํ๋กํ ์ฝ์ ์คํํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ์ค๋ช ํ๋ RFC 2์ด ๊ตฌํ๋์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ(RFC 9218)์์ ๋ณด๋ธ ์๋ต์ ์ฐ์ ์์์ ์ํฅ์ ๋ฏธ์น ์ ์์ ๋ฟ๋ง ์๋๋ผ ์์ฒญ์ ๋ฆฌ๋๋ ์ ํ ๋ ์ฐ์ ์์๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ณ ๊ธ ์ฐ์ ์์ ๊ด๋ฆฌ ์ฒด๊ณ๊ฐ ๊ตฌํ๋์์ต๋๋ค. HTTP/2๋ PRIORITY_UPDATE ํ๋ ์์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- lighttpd.conf ์ค์ ์์ ๋ฌธ์์ด์ ์์(=^)๊ณผ ๋(=$)์ ๋ฐ์ธ๋ฉํ๋ ์กฐ๊ฑด๋ถ ์ผ์น์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์์ด ๊ฒ์ฌ๋ ์ ๊ท์๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ฉฐ ๋ง์ ๊ฐ๋จํ ๊ฒ์ฌ์ ์ถฉ๋ถํฉ๋๋ค.
- mod_webdav์ ๋ถ๋ถ PUT ์์ (Range ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ผ๋ถ ํฌํจ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํ์ฑํํ๋ ค๋ฉด 'webdav.opts += ("partial-put-copy-modify' => "enable")' ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- mod_accesslog์ 'accesslog.escaping = 'json' ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค."
- mod_deflate์ libdeflate๋ฅผ ์ฌ์ฉํ ๋น๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- HTTP/2๋ฅผ ํตํ ์์ฒญ ๋ณธ๋ฌธ ์ ์ก์ด ๊ฐ์ํ๋์์ต๋๋ค.
- server.max-keep-alive-requests ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ด 100์์ 1000์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- MIME ์ ํ ๋ชฉ๋ก์์ "application/javascript"๊ฐ "text/javascript"๋ก ๋์ฒด๋์์ต๋๋ค(RFC 9239).
ํฅํ ๊ณํ์๋ TLS์ ๋ํ ๋ณด๋ค ์๊ฒฉํ ์ํธํ ์ค์ ๊ณผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฑฐ์ ์ํธํ ๋นํ์ฑํ๊ฐ ํฌํจ๋ฉ๋๋ค. CipherString ์ค์ ์ด "HIGH"์์ "EECDH+AESGCM:AES256+EECDH:CHACHA20:SHA256:!SHA384"๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ํ ์ฌ์ฉ๋์ง ์๋ TLS ์ต์
(ssl.honor-cipher-order, ssl.dh-file, ssl.ec-curve, ssl.disable-client-renegotiation, ssl.use-sslv2, ssl.use-sslv3)๋ ์ ๊ฑฐ๋ ์์ ์
๋๋ค. ๋ํ ์ฐ๋ฆฌ๋ mod_magnet์ ๋ณด๋ค ์ ์ฐํ Lua ๊ตฌํ์ผ๋ก ๋์ฒดํ ์ ์๋ ๋ฏธ๋ ๋ชจ๋์ ๊ณ์ํด์ ์ ๋ฆฌํ ๊ฒ์
๋๋ค. ํนํ, mod_evasive, mod_secdownload, mod_uploadprogress ๋ฐ mod_usertrack ๋ชจ๋์ ์ ๊ฑฐ๋ ์์ ์
๋๋ค.
์ถ์ฒ : opennet.ru