nginx 1.16.0 ๋ฆด๋ฆฌ์Šค

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

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

  • ' ์ง€์‹œ๋ฌธ์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ssl_certificate' ๊ทธ๋ฆฌ๊ณ  'SSL_certificate_key'๋Š” ์ธ์ฆ์„œ๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ค‘๊ฐ„ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜์—์„œ SSL ์ธ์ฆ์„œ์™€ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋ก์—์„œ "์ƒ๋ฅ˜์—ยป ์ƒˆ๋กœ์šด ์ง€์นจ์ด ๊ตฌํ˜„๋จ ยซ๋‹ฅ์น˜๋Š”๋Œ€๋กœ์˜โ€œ์ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•˜์—ฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ์—์„œ๋Š” ngx_stream_ssl_preread ๊ตฌํ˜„๋œ ๋ณ€์ˆ˜ $ssl_preread_protocol,
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š” SSL/TLS ํ”„๋กœํ† ์ฝœ์˜ ๊ฐ€์žฅ ๋†’์€ ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์ƒ์„ฑ http ๋ฐ ์ŠคํŠธ๋ฆผ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ํ”„๋ก์‹œํ•  ๋•Œ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ํ†ตํ•ด SSL ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ ํฌํŠธ๋ฅผ ํ†ตํ•ด SSH ๋ฐ HTTPS๋ฅผ ํ†ตํ•œ ์•ก์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํŠธ 443์„ SSH๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ SSL ๋ฒ„์ „์ด ์ •์˜๋œ ๊ฒฝ์šฐ HTTPS๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—…์ŠคํŠธ๋ฆผ ๋ชจ๋“ˆ์— ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.$upstream_bytes_sent"๋Š” ๊ทธ๋ฃน ์„œ๋ฒ„๋กœ ์ „์†ก๋œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ๋กœ ํ๋ฆ„ ํ•œ ์„ธ์…˜ ๋‚ด์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ์—ฌ๋Ÿฌ UDP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์‹œ์–ด "ํ”„๋ก์‹œ_์š”์ฒญ"๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ์ด์— ๋„๋‹ฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ๊ธฐ์กด UDP ์„ธ์…˜ ๊ฐ„์˜ ๋ฐ”์ธ๋”ฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ˆ˜์‹ ํ•œ ํ›„ ๋™์ผํ•œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์€ ์ƒˆ ์„ธ์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ Listen ์ง€์‹œ๋ฌธ์— ํฌํŠธ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์‹œ์–ด "๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.SSL_early_dataยป ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด 0-RTT ์ด์ „์— ํ˜‘์ƒ๋œ TLS ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ  ์ด์ „์— ์„ค์ •๋œ ์—ฐ๊ฒฐ์„ ์žฌ๊ฐœํ•  ๋•Œ RTT ์ˆ˜๋ฅผ 1.3๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” TLSv2์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  • ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด keepalive๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ง€์‹œ๋ฌธ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์†Œ์ผ“์— ๋Œ€ํ•œ SO_KEEPALIVE ์˜ต์…˜ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”).

    • ยซProxy_socket_keepalive" - ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ยซfastcgi_socket_keepalive" - FastCGI ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ยซgrpc_socket_keepalive" - gRPC ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ยซmemcached_socket_keepalive" - memcached ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ยซscgi_socket_keepalive" - SCGI ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ยซuwsgi_socket_keepalive" - uwsgi ์„œ๋ฒ„๋กœ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ "TCP keepalive" ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์‹œ๋ฌธ์—์„œ "ํ•œ๋„_์š”๊ตฌ๋Ÿ‰" ์ค‘๋ณต ์š”์ฒญ์ด ์ง€์—ฐ๋˜๋Š” ์ œํ•œ์„ ์„ค์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜ "์ง€์—ฐ"์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Keepalive์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด "upstream" ๋ธ”๋ก์— ์ƒˆ๋กœ์šด ์ง€์‹œ๋ฌธ "keepalive_timeout" ๋ฐ "keepalive_requests"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • "ssl" ์ง€์‹œ๋ฌธ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ "listen" ์ง€์‹œ๋ฌธ์˜ "ssl" ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์„ค์ •์—์„œ "ssl" ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ "listen" ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ๋ˆ„๋ฝ๋œ SSL ์ธ์ฆ์„œ๊ฐ€ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค.
  • Reset_timedout_connection ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด์ œ ์ œํ•œ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด 444 ์ฝ”๋“œ๋กœ ์—ฐ๊ฒฐ์ด ๋‹ซํž™๋‹ˆ๋‹ค.
  • SSL ์˜ค๋ฅ˜ "http ์š”์ฒญ", "https ํ”„๋ก์‹œ ์š”์ฒญ", "์ง€์›๋˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ" ๋ฐ "๋ฒ„์ „์ด ๋„ˆ๋ฌด ๋‚ฎ์Œ"์ด ์ด์ œ ๋กœ๊ทธ์— "crit" ๋Œ€์‹  "info" ์ˆ˜์ค€์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • Windows Vista ์ด์ƒ์„ ์‚ฌ์šฉํ•  ๋•Œ Windows ์‹œ์Šคํ…œ์—์„œ ํด๋ง ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ TLSv1.3 OpenSSL๋ฟ๋งŒ ์•„๋‹ˆ๋ผ BoringSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์ถ•ํ•  ๋•Œ.

์ถœ์ฒ˜ : opennet.ru

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