ปล่อย nginx 1.16.0

หลังจากหนึ่งปีของการพัฒนา แสดงโดย สาขาใหม่ที่เสถียรของเซิร์ฟเวอร์ HTTP ประสิทธิภาพสูงและพร็อกซีเซิร์ฟเวอร์หลายโปรโตคอล nginx 1.16.0ซึ่งดูดซับการเปลี่ยนแปลงที่สะสมภายในสาขาหลัก 1.15.x ในอนาคต การเปลี่ยนแปลงทั้งหมดในสาขาเสถียร 1.16 จะเกี่ยวข้องกับการกำจัดข้อผิดพลาดร้ายแรงและช่องโหว่ จะมีการจัดตั้งสาขาหลักของ nginx 1.17 เร็วๆ นี้ ซึ่งการพัฒนาคุณสมบัติใหม่จะดำเนินต่อไป สำหรับผู้ใช้ทั่วไปที่ไม่มีงานตรวจสอบความเข้ากันได้กับโมดูลของบุคคลที่สาม แนะนำ ใช้สาขาหลักโดยพิจารณาจากการเปิดตัวผลิตภัณฑ์เชิงพาณิชย์ Nginx Plus ทุก ๆ สามเดือน

การปรับปรุงที่โดดเด่นที่สุดที่เพิ่มเข้ามาในระหว่างการพัฒนาสาขาอัปสตรีม 1.15.x:

  • เพิ่มความสามารถในการใช้ตัวแปรใน 'คำสั่ง'ssl_certificate'หรือ'ssl_certificate_key' ซึ่งสามารถใช้เพื่อโหลดใบรับรองแบบไดนามิก
  • เพิ่มความสามารถในการโหลดใบรับรอง SSL และคีย์ลับจากตัวแปรโดยไม่ต้องใช้ไฟล์ระดับกลาง
  • ในบล็อก"ต้นน้ำลำธาร» มีการนำคำสั่งใหม่ไปใช้แล้ว «สุ่ม“ ด้วยความช่วยเหลือซึ่งคุณสามารถจัดระเบียบโหลดบาลานซ์ด้วยการเลือกเซิร์ฟเวอร์แบบสุ่มเพื่อส่งต่อการเชื่อมต่อ
  • ในโมดูล ngx_stream_ssl_preread ตัวแปรที่นำมาใช้ $ssl_preread_protocol,
    ซึ่งระบุเวอร์ชันสูงสุดของโปรโตคอล SSL/TLS ที่ไคลเอนต์รองรับ ตัวแปรอนุญาต สร้างการกำหนดค่า สำหรับการเข้าถึงโดยใช้โปรโตคอลต่างๆ ที่มีและไม่มี SSL ผ่านพอร์ตเครือข่ายเดียวเมื่อรับส่งข้อมูลโดยใช้ http และโมดูลสตรีม ตัวอย่างเช่น หากต้องการจัดระเบียบการเข้าถึงผ่าน SSH และ HTTPS ผ่านพอร์ตเดียว พอร์ต 443 สามารถส่งต่อเป็นค่าเริ่มต้นไปยัง SSH ได้ แต่หากมีการกำหนดเวอร์ชัน SSL ให้ส่งต่อไปยัง HTTPS

  • มีการเพิ่มตัวแปรใหม่ให้กับโมดูลอัปสตรีม "$upstream_bytes_sent" ซึ่งแสดงจำนวนไบต์ที่ถ่ายโอนไปยังเซิร์ฟเวอร์กลุ่ม
  • ไปยังโมดูล กระแส ภายในเซสชันเดียว ความสามารถในการประมวลผลดาตาแกรม UDP ขาเข้าหลายรายการจากไคลเอนต์ได้ถูกเพิ่มเข้ามา
  • คำสั่ง "proxy_requests" ระบุจำนวนดาตาแกรมที่ได้รับจากไคลเอนต์ เมื่อถึงจุดเชื่อมโยงระหว่างไคลเอนต์และเซสชัน UDP ที่มีอยู่จะถูกลบออก หลังจากได้รับดาตาแกรมตามจำนวนที่ระบุแล้ว ดาตาแกรมถัดไปที่ได้รับจากไคลเอนต์เดียวกันจะเริ่มต้นเซสชันใหม่
  • ขณะนี้ Listen Directive มีความสามารถในการระบุช่วงพอร์ตแล้ว
  • เพิ่มคำสั่ง "ssl_early_data» เพื่อเปิดใช้งานโหมด 0-RTT เมื่อใช้ TLSv1.3 ซึ่งช่วยให้คุณสามารถบันทึกพารามิเตอร์การเชื่อมต่อ TLS ที่เจรจาไว้ก่อนหน้านี้ และลดจำนวน RTT เหลือ 2 เมื่อกลับมาเชื่อมต่อที่สร้างไว้ก่อนหน้านี้อีกครั้ง
  • มีการเพิ่มคำสั่งใหม่เพื่อกำหนดค่า Keepalive สำหรับการเชื่อมต่อขาออก (เปิดใช้งานหรือปิดใช้งานตัวเลือก SO_KEEPALIVE สำหรับซ็อกเก็ต):

    • «proxy_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังพร็อกซีเซิร์ฟเวอร์
    • «fastcgi_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ FastCGI
    • «grpc_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ gRPC
    • «memcached_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ Memcached
    • «scgi_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ SCGI
    • «uwsgi_socket_keepalive" - กำหนดค่าลักษณะการทำงาน "TCP Keepalive" สำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ uwsgi
  • ในคำสั่ง "Limit_req" เพิ่มพารามิเตอร์ใหม่ "ล่าช้า" ซึ่งกำหนดขีดจำกัดหลังจากที่คำขอซ้ำซ้อนล่าช้า
  • มีการเพิ่มคำสั่งใหม่ "keepalive_timeout" และ "keepalive_requests" ในบล็อก "upstream" เพื่อกำหนดขีดจำกัดสำหรับ Keepalive
  • คำสั่ง "ssl" เลิกใช้แล้ว และแทนที่ด้วยพารามิเตอร์ "ssl" ในคำสั่ง "listen" ขณะนี้ตรวจพบใบรับรอง SSL ที่หายไปในขั้นตอนการทดสอบการกำหนดค่าเมื่อใช้คำสั่ง "listen" กับพารามิเตอร์ "ssl" ในการตั้งค่า
  • เมื่อใช้คำสั่ง reset_timedout_connection การเชื่อมต่อจะถูกปิดด้วยรหัส 444 เมื่อหมดเวลา
  • ข้อผิดพลาด SSL "คำขอ http", "คำขอพร็อกซี https", "โปรโตคอลที่ไม่รองรับ" และ "เวอร์ชันต่ำเกินไป" จะแสดงในบันทึกด้วยระดับ "ข้อมูล" แทนที่จะเป็น "คริติคอล";
  • เพิ่มการรองรับวิธีการโพลบนระบบ Windows เมื่อใช้ Windows Vista และใหม่กว่า
  • ความเป็นไปได้ของการใช้ TLSv1.3 เมื่อสร้างด้วยไลบรารี BoringSSL ไม่ใช่แค่ OpenSSL

ที่มา: opennet.ru

เพิ่มความคิดเห็น