Nginx (Engine x) เป็นโอเพ่นซอร์สพร็อกซีแบบย้อนกลับหนึ่งคนและเซิร์ฟเวอร์พร็อกซีอีเมลรวมทั้งเซิร์ฟเวอร์เว็บ (HTTP) ที่มีประสิทธิภาพสูงและมีน้ำหนักเบาสำหรับ Linux, BSD และ Windows ระบบปฏิบัติการ. ได้รับการอธิบายโดยนักพัฒนาซอฟต์แวร์ว่าเป็นสภาพแวดล้อมที่สำคัญสำหรับภารกิจสำคัญ ๆ
คุณสมบัติได้อย่างรวดเร็ว
ไฮไลต์ที่สำคัญ ได้แก่ การเร่งความเร็วพร็อกซีแบบย้อนกลับด้วยแคชการสนับสนุนเร่งรัดด้วยการแคช SCGI, FastCGI, uwsgi และเซิร์ฟเวอร์ที่มีการเก็บข้อมูลชั่วคราวสถาปัตยกรรมแบบโมดูลาร์รวมถึงการสนับสนุน TLS SNI และ SSL
พร็อกซีเซิร์ฟเวอร์อีเมลมีการสนับสนุน SSL (Secure Sockets Layer), STLS, โปรโตคอลที่เข้ารหัส STARTTLS วิธีการตรวจสอบสิทธิ์หลายแบบสำหรับ IMAP, POP3 และ SMTP การเปลี่ยนเส้นทางผู้ใช้ไปยังเซิร์ฟเวอร์ POP3 หรือ IMAP รวมทั้งการตรวจสอบผู้ใช้และการเปลี่ยนเส้นทางการเชื่อมต่อ . ในคุณสมบัติที่น่าสนใจอื่น ๆ เราสามารถพูดถึงการสนับสนุน kqueue, sendfile, File AIO, DIRECTIO, accept-filters และอื่น ๆ อีกมากมาย
สามารถประมวลผลการผนวกรวม SSI จำนวนมากพร้อมกันภายในเว็บเพจเดียวหากได้รับการควบคุมโดย FastCGI หรือพร็อกซีเซิร์ฟเวอร์ นอกจากนี้ส่วนเซิร์ฟเวอร์ HTTP ของโปรแกรมยังสนับสนุนการตรวจสอบความถูกต้องของการอ้างถึง HTTP, สตรีมมิ่ง MP4 และ FLV, การฝัง Perl, การ จำกัด อัตราการตอบรับ, การเปลี่ยนเส้นทางสำหรับรหัสข้อผิดพลาด 3xx-5xx รวมทั้งการสนับสนุนการเชื่อมต่อแบบต่อเนื่องและแบบต่อเนื่อง
เซิร์ฟเวอร์ทั้งดัชนีและไฟล์แบบคงที่
ซอฟต์แวร์สามารถให้บริการไฟล์ทั้งแบบดัชนีและแบบสแตติกทำให้ผู้ใช้มีความทนทานต่อข้อผิดพลาดและการปรับสมดุลแบบง่ายตัวกรองต่างๆเช่น XSLT, gzipping, SSI, การแปลงภาพ, การตอบสนองแบบ chunked และช่วงไบต์
เนื่องจากมีการกำหนดค่าที่ยืดหยุ่นง่ายและมีตรรกะทำให้เว็บไซต์ที่มีชื่อเสียงหลายแห่งใช้ซอฟต์แวร์ nginx เพื่อส่งมอบผู้ใช้ด้วยข้อมูลที่มีคุณภาพและไม่ซ้ำใคร ในจำนวนนี้เราสามารถพูดถึง Wordpress.com, Netflix และ FastMail.FM ได้
ระบบปฏิบัติการที่สนับสนุน
ในขณะนี้ nginx ได้รับการทดสอบเรียบร้อยแล้วบน Linux 2.2-3 (32 บิต), Linux 2.6-3 (64 บิต), FreeBSD 3-10 (32 บิต), FreeBSD 5-10 (64- bit), Solaris 9 (32-bit), Solaris 10 (32 บิตและ 64 บิต), AIX 7.1 (PowerPC), HP-UX 11.31 (IA64), Mac OS X (PowerPC และ 32 บิต), Windows XP , และ Windows Server 2003
มีอะไรใหม่ ในรุ่นนี้:
- เวอร์ชันเสถียร nginx-1.12.0 ได้รับการเผยแพร่แล้วโดยรวมคุณลักษณะใหม่และการแก้ไขข้อบกพร่องจาก 1.11 .x Mainline Branch - รวมถึงการสนับสนุนตัวแปรและการปรับปรุงอื่น ๆ ในโมดูลสตรีม, การแก้ไขปัญหา HTTP / 2, การสนับสนุนใบรับรอง SSL หลายประเภท, การสนับสนุนโมดูลไดนามิกดีขึ้นและอื่น ๆ
- เวอร์ชันเสถียรภาพ nginx-1.12.0 ได้รับการเผยแพร่แล้ว คุณลักษณะและการแก้ไขข้อบกพร่องจากสาขา mainline 1.11.x ซึ่งรวมถึงการสนับสนุนตัวแปรและการปรับปรุงอื่น ๆ ในโมดูลสตรีมการแก้ไข HTTP / 2 การสนับสนุนใบรับรอง SSL หลายประเภทการสนับสนุนโมดูลไดนามิกดีขึ้นและอื่น ๆ
- ความปลอดภัย: ตัวชี้ dereference ที่ไม่ถูกต้องอาจเกิดขึ้นระหว่างการประมวลผลการตอบสนองเซิร์ฟเวอร์ DNS ถ้า & quot; resolver & quot; (CVE-2016-0742)
- การรักษาความปลอดภัย: สภาพการใช้งานฟรีอาจเกิดขึ้นระหว่างการประมวลผลคำตอบ CNAME ถ้า & quot; ผู้แก้ปัญหา & quot; (CVE-2016-0746)
- มีการใช้คำสั่งนี้เพื่อให้ผู้โจมตีสามารถเรียกความละเอียดของชื่อได้
- การรักษาความปลอดภัย: ความละเอียดของ CNAME ไม่เพียงพอ จำกัด ถ้า & quot; resolver & quot; (CVE-2016-0747)
- Bugfix: & quot; proxy_protocol & quot; พารามิเตอร์ของ & quot; ฟัง & quot; directive ไม่ทำงานถ้าไม่ได้ระบุไว้ในส่วนแรก & quot; listen & quot; คำสั่งสำหรับซ็อกเก็ตการฟัง
- Bugfix: nginx อาจล้มเหลวในการเริ่มต้นใช้งานรูปแบบลินุกซ์บางรุ่น ข้อผิดพลาดปรากฏใน 1.7.11
- Bugfix: ข้อผิดพลาดเกี่ยวกับการแบ่งส่วนอาจเกิดขึ้นในกระบวนการของผู้ปฏิบัติงานถ้า & quot; try_files & quot; และ & quot; นามแฝง & quot; คำสั่งถูกนำมาใช้ภายในตำแหน่งที่กำหนดโดยนิพจน์ทั่วไป ข้อผิดพลาดปรากฏใน 1.7.1
- Bugfix: ไฟล์ & quot; try_files & quot; directive ภายในตำแหน่งที่ซ้อนกันโดยนิพจน์ทั่วไปทำงานไม่ถูกต้องหาก & quot; นามแฝง & quot; directive ถูกใช้ในตำแหน่งภายนอก
- Bugfix: & quot; ส่วนหัวที่ส่งแล้ว & quot; การแจ้งเตือนอาจปรากฏในบันทึกเมื่อใช้แคช ข้อผิดพลาดปรากฏใน 1.7.5
- ข้อผิดพลาด: ข้อผิดพลาดเกี่ยวกับการแบ่งส่วนอาจเกิดขึ้นในกระบวนการของผู้ปฏิบัติงานหากมีการตั้งค่า ssl_session_cache ที่แตกต่างกันในเซิร์ฟเวอร์เสมือนที่ต่างกัน
- Bugfix: ส่วน & quot; หมดอายุ & quot; directive อาจไม่ทำงานเมื่อใช้ตัวแปร
- Bugfix: ถ้า nginx สร้างขึ้นด้วย ngx_http_spdy_module คุณสามารถใช้โปรโตคอล SPDY ได้แม้ว่าจะมีการ & quot; spdy & quot; พารามิเตอร์ของ & quot; ฟัง & quot; ไม่ได้ระบุ directive
- มีคุณสมบัติใหม่มากมายจาก mainline 1.7.x สาขารวมถึงวิธีการแบชบาลานซ์แบบแบ็กอัพ, การยืนยันใบรับรอง SSL แบ็กเอนด์, การสนับสนุนกลุ่มการสนับสนุนเธรดทดลอง, proxy_request_buffering และอื่น ๆ
- เปลี่ยน: ตอนนี้บรรทัดส่วนหัวของ & quot; If-Modified-Since & quot ;, & quot; If-Range & quot ;, ฯลฯ จะถูกส่งไปยังแบ็กเอนด์ขณะที่แคชถ้า nginx รู้ล่วงหน้าว่าการตอบกลับ จะไม่ถูกเก็บไว้ในแคช (เช่นเมื่อใช้ proxy_cache_min_uses)
- เปลี่ยน: ตอนนี้หลังจาก proxy_cache_lock_timeout nginx ส่งคำขอไปยังแบ็กเอนด์ที่ปิดใช้งานแคชแล้ว คำสั่งใหม่ & quot; proxy_cache_lock_age & quot ;, & quot; fastcgi_cache_lock_age & quot ;, & quot; scgi_cache_lock_age & quot; และ & quot; uwsgi_cache_lock_age & quot; ระบุเวลาหลังจากที่ล็อคจะได้รับการอนุมัติและจะมีการพยายามแคชการตอบกลับอื่นอีกครั้ง
- เปลี่ยน: ส่วน & quot; log_format & quot; directive สามารถใช้งานได้ในระดับ http เท่านั้น
- คุณลักษณะ: & quot; proxy_ssl_certificate & quot ;, & quot; proxy_ssl_certificate_key & quot ;, & quot; proxy_ssl_password_file & quot ;, & quot; uwsgi_certification & quot; & quot; uwsgi_ssl_certificate_key & quot; & quot; uwsgi_ssl_password_file & quot; & quot; สั่ง ขอขอบคุณ Piotr Sikora
- คุณลักษณะ: ตอนนี้สามารถเปลี่ยนไปใช้ตำแหน่งที่ตั้งชื่อโดยใช้ & quot; X-Accel-Redirect & quot; ขอบคุณ Toshikuni Fukaya
- คุณลักษณะ: ตอนนี้ & quot; tcp_nodelay & quot; directive ทำงานร่วมกับการเชื่อมต่อ SPDY
- คุณลักษณะ: คำสั่งใหม่ในไวยากรณ์ไวยากรณ์สคริปต์ highliting ขอบคุณ Peter Wu
- Bugfix: nginx ไม่สนใจ & quot; s-maxage & quot; ในส่วน & quot; Cache-Control & quot; ส่วนหัวส่วนท้ายของการตอบกลับ ขอขอบคุณ Piotr Sikora
- Bugfix: ใน ngx_http_spdy_module ขอขอบคุณ Piotr Sikora
- Bugfix: ในส่วน & quot; ssl_password_file & quot; directive เมื่อใช้ OpenSSL 0.9.8zc, 1.0.0o, 1.0.1j
- Bugfix: Alerts & quot; ส่วนหัวที่ส่งแล้ว & quot; ปรากฏในบันทึกถ้า & quot; post_action & quot; ใช้คำสั่ง; ข้อบกพร่องปรากฏใน 1.5.4
- Bugfix: แจ้งเตือน & quot; ห่วงโซ่ผลลัพธ์ http ว่างเปล่า & quot; อาจปรากฏในบันทึกถ้า & quot; postpone_output 0 & quot; directive ใช้กับ SSI รวมอยู่ด้วย
- Bugfix: ในส่วน & quot; proxy_cache_lock & quot; directive กับ subrequests SSI ขอบคุณ Yichun Zhang
- ความปลอดภัย: สามารถใช้เซสชัน SSL ในบริบทที่ไม่เกี่ยวข้องได้หากมีการใช้แคชเซสชัน SSL ร่วมกันหรือคีย์ตั๋วเวลา TLS เดียวกันกับเซิร์ฟเวอร์ & quot; บล็อก (CVE-2014-3616) ขอบคุณ Antoine Delignat-Lavaud
- Bugfix: การร้องขออาจแขวนหากมีการใช้ตัวแก้ปัญหาและเซิร์ฟเวอร์ DNS ส่งคืนการตอบสนองที่ไม่ถูกต้อง ข้อบกพร่องปรากฏใน 1.5.8
- Bugfix: คำขออาจวางสายหากมีการใช้ตัวแก้ปัญหาและการหมดเวลาเกิดขึ้นระหว่างการร้องขอ DNS
- ความปลอดภัย: คำสั่งที่ถูกวางท่อไม่ถูกละทิ้งหลังจากคำสั่ง STARTTLS ในพร็อกซี SMTP (CVE-2014-3556); ข้อผิดพลาดปรากฏใน 1.5.6 ขอขอบคุณ Chris Boulton
- Bugfix: ตัวแปร $ uri อาจมีขยะเมื่อส่งคืนข้อผิดพลาดด้วยรหัส 400 ขอบคุณ Sergey Bobrov
- Bugfix: ในส่วน & quot; ไม่มี & quot; ในส่วน & quot; smtp_auth & quot; สั่ง; ข้อผิดพลาดปรากฏใน 1.5.6 ขอบคุณ Svyatoslav Nikolsky
- เวอร์ชันเสถียรนี้ประกอบด้วยคุณลักษณะใหม่มากมายจากสาขา mainline 1.5.x - รวมถึงการปรับปรุง SSL ต่างๆการสนับสนุน SPDY 3.1 การตรวจสอบแคชด้วยคำขอตามเงื่อนไขโมดูลการขอให้ตรวจสอบสิทธิ์และอื่น ๆ
- ความปลอดภัย: หน่วยความจำล้นหน่วยความจำล้นอาจเกิดขึ้นได้ กระบวนการของผู้ปฏิบัติงานขณะที่จัดการคำขอที่สร้างขึ้นมาเป็นพิเศษโดย ngx_http_spdy_module ซึ่งอาจทำให้เกิดการเรียกใช้โค้ดที่เขียนขึ้นเอง (CVE-2014-0133) ขอบคุณลูคัส Molas นักวิจัยที่ Programa STIC Fundacion ดร. มานูเอลซาดิสกี้บัวโนสไอเรสอาร์เจนตินา
- Bugfix: ในส่วน & quot; fastcgi_next_upstream & quot; คำสั่ง ขอบคุณลูคัส Molas
- Bugfix: ส่วน "client_max_body_size & quot; คำสั่งอาจไม่ทำงานเมื่ออ่านเนื้อหาคำขอโดยใช้การเข้ารหัสการถ่ายโอนแบบ chunked ข้อบกพร่องปรากฏใน 1.3.9 ขอบคุณลูคัส Molas
- ข้อผิดพลาด: ข้อผิดพลาดเกี่ยวกับการแบ่งส่วนอาจเกิดขึ้นในกระบวนการของผู้ปฏิบัติงานเมื่อพร็อกซีการเชื่อมต่อ WebSocket
- Bugfix: ตัวแปร $ ssl_session_id มีเซสชันเต็มรูปแบบแบบอนุกรมแทนที่จะเป็นเพียงรหัสเซสชัน ขอขอบคุณ Ivan Ristic
- การแก้ไขข้อบกพร่อง: การเชื่อมต่อไคลเอ็นต์อาจปิดทันทีหากยอมรับการยอมรับที่ถูกเลื่อนออกไป ข้อบกพร่องปรากฏใน 1.3.15
- Bugfix: การแจ้งเตือน & quot; zero buf ขนาดในผลลัพธ์ & quot; อาจปรากฏในบันทึกขณะที่พร็อกซี; ข้อบกพร่องปรากฏใน 1.3.9
- ข้อผิดพลาด: ข้อผิดพลาดเกี่ยวกับการแบ่งส่วนอาจเกิดขึ้นในกระบวนการของพนักงานหากใช้ ngx_http_spdy_module
- การแก้ไขข้อบกพร่อง: การเชื่อมต่อ WebSocket แบบพร็อกซีอาจแฮงค์ทันทีหลังจากการจับมือหากใช้วิธีเลือกแบบสำรวจความคิดเห็นหรือ / dev / โพลล์
- Bugfix: การหมดเวลาอาจเกิดขึ้นขณะอ่านเนื้อหาคำขอของไคลเอ็นต์ในการเชื่อมต่อ SSL โดยใช้การเข้ารหัสการโอนย้ายแบบ chunked
- Bugfix: หน่วยความจำรั่วใน nginx / Windows
- ข่าวประชาสัมพันธ์ฉบับนี้นำเสนอการแก้ไขสำหรับการแยกวิเคราะห์ตามคำขอ ช่องโหว่ใน nginx 0.8.41 - 1.5.6 ที่อีวานมูรัตของทีมรักษาความปลอดภัยของ Google (CVE-2013-4547) ค้นพบ
- การรักษาความปลอดภัย: บัฟเฟอร์ล้นอาจเกิดขึ้นได้ในกระบวนการของพนักงานขณะที่ดำเนินการกับคำขอที่สร้างขึ้นมาเป็นพิเศษซึ่งอาจส่งผลให้เกิดการเรียกใช้โค้ดที่กำหนดไว้ (CVE-2013-2028) ข้อบกพร่องปรากฏใน 1.3.9 ขอบคุณ Greg MacManus, iSIGHT Partners Labs
มีอะไรใหม่ ในเวอร์ชัน:
มีอะไรใหม่ ในเวอร์ชัน 1.8.1:
มีอะไรใหม่ ในเวอร์ชัน 1.7.8:
มีอะไรใหม่ ในเวอร์ชัน 1.6.2:
มีอะไรใหม่ ในเวอร์ชัน 1.6.1:
มีอะไรใหม่ ในเวอร์ชัน 1.6.0:
มีอะไรใหม่ ในเวอร์ชัน 1.4.7:
มีอะไรใหม่ ในเวอร์ชัน 1.4.6:
มีอะไรใหม่ ในเวอร์ชัน 1.4.5:
มีอะไรใหม่ ในเวอร์ชัน 1.4.4:
มีอะไรใหม่ ในเวอร์ชัน 1.5.0:
ความคิดเห็นที่ไม่พบ