nginx 1.20.0 ๋ฆด๋ฆฌ์Šค

1.20.0๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ๋ฉ”์ธ ๋ธŒ๋žœ์น˜ 1.19.x์— ์ถ•์ ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•œ ๊ณ ์„ฑ๋Šฅ HTTP ์„œ๋ฒ„์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœํ† ์ฝœ ํ”„๋ก์‹œ ์„œ๋ฒ„ nginx 1.20์˜ ์ƒˆ๋กœ์šด ์•ˆ์ • ๋ธŒ๋žœ์น˜๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์•ˆ์ • ๋ธŒ๋žœ์น˜ 1.21์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ๋ฐ ์ทจ์•ฝ์  ์ œ๊ฑฐ์™€ ๊ด€๋ จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณง nginx XNUMX์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๊ฐ€ ํ˜•์„ฑ๋  ์˜ˆ์ •์ด๋ฉฐ, ์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ๊ณ„์†๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋ชจ๋“ˆ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ XNUMX๊ฐœ์›”๋งˆ๋‹ค ์ƒ์šฉ ์ œํ’ˆ Nginx Plus๊ฐ€ ์ถœ์‹œ๋˜๋Š” ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Netcraft์˜ 20.15์›” ๋ณด๊ณ ์„œ์— ๋”ฐ๋ฅด๋ฉด nginx๋Š” ์ „์ฒด ํ™œ์„ฑ ์‚ฌ์ดํŠธ์˜ 19.56%(20.73๋…„ ์ „ 25.38%, 27.64๋…„ ์ „ 10.09%)์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋Š” ์ด ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์ธ๊ธฐ๋„ 8.51์œ„์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค(Apache์˜ ์ ์œ ์œจ์€ 35.34%์— ํ•ด๋‹น). (36.91๋…„ ์ „ 27.52%), Google - 25.98%, Cloudflare - 6.55% ๋™์‹œ์— ๋ชจ๋“  ์‚ฌ์ดํŠธ๋ฅผ ๊ณ ๋ คํ•˜๋ฉด nginx๊ฐ€ ์„ ๋‘๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ์‹œ์žฅ์˜ 5.96%๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.(XNUMX๋…„ ์ „ XNUMX%, XNUMX๋…„ ์ „ - XNUMX%), Apache์˜ ์ ์œ ์œจ์€ XNUMX%์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ˜๋ฉด OpenResty(nginx ๋ฐ LuaJIT ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ) - XNUMX%, Microsoft IIS - XNUMX%.

์ „ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐฉ๋ฌธํ•œ 25.55๋งŒ ๊ฐœ์˜ ์‚ฌ์ดํŠธ ์ค‘ nginx์˜ ์ ์œ ์œจ์€ 25.54%(26.22๋…„ ์ „ 419%, 459๋…„ ์ „ 3%)์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์•ฝ 33.7์–ต 31.9๋งŒ ๊ฐœ์˜ ์›น์‚ฌ์ดํŠธ๊ฐ€ Nginx๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(41.8๋…„ ์ „ 39.5์–ต 34๋งŒ ๊ฐœ). W8.3Techs์— ๋”ฐ๋ฅด๋ฉด nginx๋Š” ๊ฐ€์žฅ ๋งŽ์ด ๋ฐฉ๋ฌธํ•œ 7๋งŒ ๊ฐœ ์‚ฌ์ดํŠธ ์ค‘ 6.3%์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž‘๋…„ 8.4์›” ์ด ์ˆ˜์น˜๋Š” ์ „๋…„๋„ 0.8%, ์ฆ‰ 1.2%์˜€์Šต๋‹ˆ๋‹ค(์ด ๊ฐ์†Œ๋Š” Cloudflare http์˜ ๋ณ„๋„ ํšŒ๊ณ„๋กœ์˜ ์ „ํ™˜์œผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค). ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ). Apache์˜ ์ ์œ ์œจ์€ 79.1๋…„ ๋™์•ˆ 78.9%์—์„œ XNUMX%๋กœ ๊ฐ์†Œํ–ˆ์œผ๋ฉฐ Microsoft IIS์˜ ์ ์œ ์œจ์€ XNUMX%์—์„œ XNUMX%๋กœ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. LiteSpeed์˜ ์ ์œ ์œจ์€ XNUMX%์—์„œ XNUMX%๋กœ, Node.js๋Š” XNUMX%์—์„œ XNUMX%๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฌ์‹œ์•„์—์„œ๋Š” ๊ฐ€์žฅ ๋งŽ์ด ๋ฐฉ๋ฌธํ•œ ์‚ฌ์ดํŠธ ์ค‘ XNUMX%(XNUMX๋…„ ์ „ - XNUMX%)์—์„œ nginx๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1.19.x ์—…์ŠคํŠธ๋ฆผ ๋ธŒ๋žœ์น˜ ๊ฐœ๋ฐœ ์ค‘์— ์ถ”๊ฐ€๋œ ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • OCSP(์˜จ๋ผ์ธ ์ธ์ฆ์„œ ์ƒํƒœ ํ”„๋กœํ† ์ฝœ) ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์บ์‹œ ํฌ๊ธฐ(ssl_ocsp_cache)๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์ธ์ฆ์„œ์— ์ง€์ •๋œ OCSP ์ฒ˜๋ฆฌ๊ธฐ์˜ URL(ssl_ocsp_responder)์„ ์žฌ์ •์˜ํ•˜๋Š” ssl_ocsp ์ง€์‹œ๋ฌธ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • ngx_stream_set_module ๋ชจ๋“ˆ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ์„œ๋ฒ„ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {listen 12345; $true 1์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. }
  • ํ”„๋ก์‹œ ์—ฐ๊ฒฐ์—์„œ ์ฟ ํ‚ค์— ๋Œ€ํ•œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด Proxy_cookie_flags ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฟ ํ‚ค "one"์— "httponly" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์ฟ ํ‚ค์— "nosecure" ๋ฐ "samesite=strict" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Proxy_cookie_flags ~ nosecure samesite=strict;

    ์ฟ ํ‚ค์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์œ ์‚ฌํ•œ userid_flags ์ง€์‹œ๋ฌธ๋„ ngx_http_userid ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

  • OpenSSL ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์ž„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" ๋ฐ "uwsgi_ssl_conf_command" ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ChaCha ์•”ํ˜ธํ™” ๋ฐ TLSv1.3 ์•”ํ˜ธํ™”์˜ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ssl_conf_command ์˜ต์…˜ PrioritizeChaCha๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ssl_conf_command ์•”ํ˜ธํ™” ์ œํ’ˆ๊ตฐ TLS_CHACHA20_POLY1305_SHA256;
  • SSL ์—ฐ๊ฒฐ์„ ํ˜‘์ƒํ•˜๋ ค๋Š” ๋ชจ๋“  ์‹œ๋„๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” "ssl_reject_handshake" ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SNI ํ•„๋“œ์— ์•Œ ์ˆ˜ ์—†๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์žˆ๋Š” ๋ชจ๋“  ํ˜ธ์ถœ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ { 443 SSL ์ˆ˜์‹ ; ssl_reject_handshake ์ผœ๊ธฐ; } ์„œ๋ฒ„ { 443 SSL ์ˆ˜์‹ ; ์„œ๋ฒ„ ์ด๋ฆ„ example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • Proxy_smtp_auth ์ง€์‹œ๋ฌธ์ด ๋ฉ”์ผ ํ”„๋ก์‹œ์— ์ถ”๊ฐ€๋˜์–ด AUTH ๋ช…๋ น๊ณผ PLAIN SASL ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ์—ฐ๊ฒฐ ์œ ์ง€ ์—ฐ๊ฒฐ์˜ ์ด ์ˆ˜๋ช…์„ ์ œํ•œํ•˜๋Š” "keepalive_time" ์ง€์‹œ์–ด๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ์—ฐ๊ฒฐ์ด ๋‹ซํž™๋‹ˆ๋‹ค(์—ฐ๊ฒฐ ์œ ์ง€ ์—ฐ๊ฒฐ์ด ๋‹ซํžŒ ํ›„ ๋น„ํ™œ์„ฑ ์‹œ๊ฐ„์„ ์ •์˜ํ•˜๋Š” keepalive_timeout๊ณผ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค).
  • $connection_time ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์˜ ์ •ํ™•๋„๋กœ ์—ฐ๊ฒฐ ์ง€์† ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" ๋ฐ "uwsgi_cache_path" ์ง€์‹œ๋ฌธ์— "min_free" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ์—ฌ์œ  ๋””์Šคํฌ ๊ณต๊ฐ„์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • "lingering_close", "lingering_time" ๋ฐ "lingering_timeout" ์ง€์‹œ๋ฌธ์ด HTTP/2์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • HTTP/2์˜ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋Š” HTTP/1.x ๊ตฌํ˜„๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ์„ค์ • "http2_recv_timeout", "http2_idle_timeout" ๋ฐ "http2_max_requests"์— ๋Œ€ํ•œ ์ง€์›์€ ์ผ๋ฐ˜ ์ง€์‹œ๋ฌธ "keepalive_timeout" ๋ฐ "keepalive_requests"๋ฅผ ์œ„ํ•ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "http2_max_field_size" ๋ฐ "http2_max_header_size" ์„ค์ •์ด ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฉฐ ๋Œ€์‹  "large_client_header_buffers"๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ค์ •์— ์ง€์ •๋œ ๋กœ๊ทธ ๋Œ€์‹  ์‚ฌ์šฉ๋˜๋Š” ์˜ค๋ฅ˜ ๋กœ๊ทธ ์ž‘์„ฑ์„ ์œ„ํ•œ ๋Œ€์ฒด ํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์ค„ ์˜ต์…˜ "-e"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„ ๋Œ€์‹  ํŠน์ˆ˜ ๊ฐ’ stderr์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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