Lighttpd http ์„œ๋ฒ„ ๋ฆด๋ฆฌ์Šค 1.4.65

๊ณ ์„ฑ๋Šฅ, ๋ณด์•ˆ, ํ‘œ์ค€ ์ค€์ˆ˜ ๋ฐ ๊ตฌ์„ฑ ์œ ์—ฐ์„ฑ์„ ๊ฒฐํ•ฉํ•˜๋ ค๋Š” ๊ฒฝ๋Ÿ‰ 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€