ปล่อย nginx 1.18.0

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

ตามที่ รายงานเดือนเมษายน Netcraft nginx ใช้กับ 19.56% ของไซต์ที่ใช้งานทั้งหมด (ปีที่แล้ว 20.73% สองปีที่แล้ว 21.02%) ซึ่งสอดคล้องกับอันดับที่สองในความนิยมในหมวดหมู่นี้ (ส่วนแบ่งของ Apache สอดคล้องกับ 27.64%, Google - 10.03%, Microsoft ไอเอส - 4.77%) . ในเวลาเดียวกันเมื่อพิจารณาไซต์ทั้งหมด nginx ยังคงความเป็นผู้นำและครองตลาด 36.91% (ปีที่แล้ว 27.52%) ในขณะที่ส่วนแบ่งของ Apache สอดคล้องกับ 24.73%, Microsoft IIS - 12.85%, Google - 3.42%

ในบรรดาเว็บไซต์ที่มีผู้เข้าชมมากที่สุดในโลก ส่วนแบ่งของ nginx อยู่ที่ 25.54% (ปีที่แล้ว 26.22% สองปีที่แล้ว 23.76%) ปัจจุบันมีเว็บไซต์ประมาณ 459 ล้านเว็บไซต์ที่ใช้งาน Nginx (397 ล้านปีที่แล้ว) โดย ข้อมูล W3Techs nginx ใช้กับไซต์ 31.9% จากไซต์ที่มีผู้เยี่ยมชมมากที่สุดล้านครั้งในเดือนเมษายนปีที่แล้วตัวเลขนี้อยู่ที่ 41.8% เมื่อปีที่แล้ว - 38% (การลดลงนี้อธิบายได้จากการเปลี่ยนไปใช้บัญชีแยกของเซิร์ฟเวอร์ Cloudflare http) ส่วนแบ่งของ Apache ลดลงตลอดทั้งปีจาก 43.6% เป็น 38.9% และส่วนแบ่งของ Microsoft IIS จาก 8.6% เป็น 8.3% ในรัสเซีย nginx เคย บน 78.9% ของไซต์ที่มีผู้เยี่ยมชมมากที่สุด (ปีที่แล้ว - 81%)

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

  • เพิ่มคำสั่งแล้ว จำกัด_req_dry_runซึ่งเปิดใช้งานโหมดทดลองใช้งาน ซึ่งไม่มีข้อจำกัดใดๆ เกี่ยวกับความเข้มข้นของการประมวลผลคำขอ (โดยไม่มีขีดจำกัดอัตรา) แต่ยังคงคำนึงถึงจำนวนคำขอที่เกินขีดจำกัดในหน่วยความจำที่ใช้ร่วมกัน
  • เพิ่มคำสั่งแล้ว Limit_conn_dry_runซึ่งเปลี่ยนโมดูล ngx_http_limit_conn_module ให้เป็นโหมดทดสอบการทำงาน ซึ่งไม่จำกัดจำนวนการเชื่อมต่อ แต่จะถูกนำมาพิจารณาด้วย
  • เพิ่มคำสั่ง "auth_delay" ซึ่งช่วยให้คุณเพิ่มความล่าช้าให้กับคำขอที่ไม่ได้รับอนุญาตด้วยรหัสตอบกลับ 401 เพื่อลดความเข้มข้นของการเดารหัสผ่านและป้องกัน การโจมตีจัดการการวัดเวลาดำเนินการของการดำเนินการ (การโจมตีด้วยเวลา) เมื่อเข้าถึงระบบที่ถูกจำกัดการเข้าถึง รหัสผ่าน, ผลลัพธ์ของแบบสอบถามย่อย หรือ จว (โทเค็นเว็บ JSON);
  • เพิ่มการรองรับตัวแปรในคำสั่ง "limit_rate" และ "limit_rate_after" รวมถึงในคำสั่ง "proxy_upload_rate" และ "proxy_download_rate" ของโมดูลสตรีม
  • ในคำสั่ง grpc_pass เพิ่มการรองรับการใช้ตัวแปรในพารามิเตอร์ที่กำหนดที่อยู่ หากระบุที่อยู่เป็นชื่อโดเมน ชื่อจะถูกค้นหาในกลุ่มเซิร์ฟเวอร์ที่อธิบายไว้ และหากไม่พบ จะพิจารณาโดยใช้รีโซลเวอร์
  • เพิ่มตัวแปรใหม่แล้ว $proxy_protocol_server_addr и $proxy_protocol_server_portซึ่งมีที่อยู่เซิร์ฟเวอร์และพอร์ตที่ได้รับจากส่วนหัวโปรโตคอล PROXY
  • ในโมดูล ngx_stream_limit_conn_module เพิ่มตัวแปรแล้ว $limit_conn_statusซึ่งเก็บผลลัพธ์ของการจำกัดจำนวนการเชื่อมต่อ: PASSED, REJECTED หรือ REJECTED_DRY_RUN;
  • ในโมดูล ngx_http_limit_req_module เพิ่มตัวแปรแล้ว $limit_req_statusซึ่งเก็บผลลัพธ์ของการจำกัดอัตราการมาถึงของคำขอ: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN หรือ REJECTED_DRY_RUN;
  • ตามค่าเริ่มต้น โมดูลจะถูกประกอบขึ้น ngx_http_postpone_filter_module;
  • เพิ่มการสนับสนุนสำหรับการสลับบล็อกที่มีชื่อ "ตำแหน่ง" โดยใช้เมธอด $r->internal_redirect() ที่จัดทำโดยล่าม Perl ในตัว วิธีการนี้เกี่ยวข้องกับการประมวลผล URI ด้วยอักขระหลีก
  • เมื่อใช้คำสั่ง "upstream" ในบล็อกการตั้งค่า "upstream"กัญชา» เพื่อจัดระเบียบการทำโหลดบาลานซ์ด้วยการเชื่อมโยงไคลเอนต์-เซิร์ฟเวอร์ หากคุณระบุค่าคีย์ว่าง ตอนนี้โหมดการปรับสมดุลแบบสม่ำเสมอ (round-robin) จะถูกเปิดใช้งาน
  • เพิ่มการรองรับการโทร ioctl (FIONREAD) หากมีเพื่อหลีกเลี่ยงการอ่านจากการเชื่อมต่อที่รวดเร็วเมื่อเวลาผ่านไป

ที่มา: opennet.ru

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