Nginx vs Apache: Web Server

LAMP Stack ทำเว็บเซิร์ฟเวอร์ไม่ต้องรู้อะไร?

ก่อนจะไปพูดถึงความแตกต่างระหว่าง Nginx กับ Apache เรามาปรับความเข้าใจเกี่ยวกับ Stack พื้นฐานของ Web server กันก่อน

Web server Stack ที่ได้รับความนิยมที่สุด
คือ LAMP Stack ย่อมาจาก Linux + Apache + MySQL/MariaDB/MongoDB + PHP

และอีก Stack คือ LEMP Stack ย่อมาจาก Linux + Nginx + MariaDB/MySQL/MongoDB + PHP

ทั้ง LAMP และ LEMP
ทำงานอยู่บนมาตรฐาน TCP โปรโตคอล
และอยู่บน Application Layer, Presentation Layer
และ Session Layer ครับ

ส่วนที่ซับซ้อนเพิ่มขึ้น
จะเกี่ยวข้องกับรูปแบบของการ implement
ที่ไปเพิ่มประสิทธิภาพให้ระบบ Web server
และ Application ครับ

เช่น ระบบ Caching
ที่ทำ Caching บนแรมเพื่อลดจำนวนการ Request
ที่ส่งไปยัง Web server และลด Latency
ในการตอบสนอง ผู้เยี่ยมชมเว็บ

หรือระบบ Load Balancing
ที่ทำหน้าที่ในการกระจาย Request จากผู้ใช้งาน เป็นต้น

ในปัจจุบันของการ implement
ระบบเว็บเซิร์ฟเวอร์ คือ ต้องรองรับผู้ใช้งานจำนวนมากได้
และปลอดภัย

มันก็คือการ handle requests
รับผู้ใช้ visitor หลายแสนคนได้ในเวลาเดียวกัน

แน่นอนครับ…
องค์ประกอบที่สำคัญคือInfrastructure + Application

เว็บแอพพลิเคชั่นหลักหลายแสน
แต่ใช้เซิร์ฟเวอร์หลักหมื่นต้นๆ คุณคิดว่าไง 55+++

Nginx vs Apache

Nginx vs Apache

เอาล่ะที่นี้
เรามาพูดถึงข้อแตกต่างระหว่าง
Nginx กับ Apache กันคร้าบบ

โดยจะเทียบระหว่างเรื่องของ Caching กับ Handling Request.

ทั้ง Nginx และ Apache
จัดเป็นซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่ popular ทั้งคู่
และได้รับความนิยมที่สุด
ถูกติดตั้งเพื่อทำหน้าที่เป็นเว็บโฮสติ้งมากที่สุดในตลาด…

1. Apache เปิดตัวครั้งแรกในปี 1995
สำหรับ Nginx นั้นเป็นที่รู้จักต่อมาในปี 2004

2. Apache และ Nginx
ถูกยิบจับไปใช้งานจริงในองค์กรขนาดใหญ่ทั่วโลก
ที่อยู่ใน Fortune 500 😮

3. ส่วนแบ่งการตลาด Nginx ได้เปรียบ Apache
ในด้าน performance ทำให้ Nginx เติบโตอย่างต่อเนื่องมาหลายปีจนล่าสุด F5 Networks เข้าซื้อกิจการด้วยมูลค่า $670 million (เมื่อ 9 พฤษภาคม 2019).

Apache

เป็นซอฟต์แวร์โอเพนซอร์ซอนุญาตให้ใช้สิทธิ์ภายใต้ Apache License รุ่น 2.0 (“สิทธิ์การใช้งาน”) สิทธิ์การใช้งานซอฟต์แวร์นี้ ให้ใช้โดยไม่มีค่าใช้จ่าย เว้นแต่จ้างติดตั้ง 55+++

ส่วนข้อกำหนดการใช้งาน
เดี๋ยวแอดลงลิงก์ไว้ข้างล่างให้คร้าบบ …

Apache ผู้เล่นรายแรกในตลาดซอฟต์แวร์สำหรับเว็บเซิร์ฟเวอร์
และแพกเกจถูกติดตั้ง (pre-installed) อยู่บนคลังของ Linux ดิสโทรต่าง ๆ เช่น Red Hat/Centos, Ubuntu, SUSE/OpenSUSE และดิสโทรอื่น ๆ

ฟีเจอร์ที่ Apache เสิร์ฟให้ …

Configuration

Apache เสิร์ฟคุณด้วย
.htaccess ไฟล์คอนฟิก
ที่สามารถให้เราคอนฟิกระบุบอกได้ว่า
requests URL นี้จะให้ไปพาท directories
ไหนหรือ page load หน้าใดเป็นต้น

Apache Modules

คุณสมบัติที่อนุญาตให้เราติดตั้งโมดูล
เพื่อเพิ่มฟังก์บน Apache ได้
เช่น โมดูล mod_authnz_ldap
ที่ทำให้เราสามารถทำ HTTP Basic authentication
กับ Ldap server ได้

หรือโมดูล mod_http2
ที่จะทำให้เครื่องเว็บเซิร์ฟเวอร์ของเรารองรับ HTTP/2 transport layer (รายชื่อโมดูลต่าง ๆ ดูจากลิงก์นี้ httpd.apache.org/docs/2.4/mod/)

Apache รันด้วยโปรเซล httpd
และโดยทั่วไปจำกัด httpd คือ 256
และจุดด้อยคือยิ่งจำนวนการเชื่อมต่อ concurrent TCP connection มากเท่าไหร่ยิ่งกินทรัพยากรทั้ง RAM และ CPU ครับ

เมื่อทรัพยากรเหลือน้อย
ไม่เพียงพอเซิร์ฟเวอร์ก็ช้า
เว็บโหลดช้า ส่งผลทำให้ user experience ไม่ดี !!

ใครอ่านมาถึงตรงนี้ กดแชร์ไปไว้ก่อน
ไม่แนะนำให้อ่านขณะขับรถ 555+++.

Nginx

Nginx จะเขียนแบบนี้ nginx
หรือ NGINX ก็ได้แล้วแต่เลยคร้าบบบ 😅

เป็น project ที่พัฒนาขึ้นโดย Igor Sysoev
นักพัฒนาชาวรัสเซีย และ Nginx มี 2 เวอร์ชั่น

1. Nginx
ที่เป็นซอฟต์แวร์โอเพนซอร์ซอนุญาตให้ใช้สิทธิ์ภายใต้ BSD-type license

2. และ Nginx Plus
ที่เป็นเวอร์ enterprise สำหรับองค์กร

(ใครก็ได้ที่มีเงินจ่าย 55)

ที่ต้องการการ support จาก F5 Networks
และ enterprise features อื่น ๆ

NGINX ถูกออกแบบมาให้ (ไม่พยายาม)
ที่จะใช้งานฟังก์ชั่นที่หลากหลายที่จำเป็น
ในการเรียกใช้งาน
และไม่มีการโหลด component ใด ๆ ที่ไม่จำเป็น
สำหรับแอพพลิเคชั่น

และมันยังทำหน้าที่เป็นพร็อกซีที่ส่งต่อคำขอ HTTP ไปยัง PHP เซิร์ฟเวอร์ (upstream เช่น Apache bancked) ส่วนที่สำคัญน้อยกว่าคือความเร็วฝั่งเซิร์ฟเวอร์ NGINX จะไม่ทำ จะโยนไปให้ Apache ทำแทน

ไม่ใช่แฟนแต่ทำแทนได้ 😄 55+++

ปัจจุบัน NGINX มีลูกค้าใช้งานแล้วมากกว่า 1,500 ราย
และ 375 ล้านเว็บไซต์ที่ขับเคลื่อนด้วย NGINX ครับ

Configuration

Nginx รูปแบบการคอนฟิกและกำหนดค่าต่างจาก Apache
มันไม่สนใจ .htaccess ที่ต้องไปเสียเวลาเช็ค

ดังนั้นทำให้มีประสิทธิภาพ
และทำงานได้รวดเร็ว
และ Nginx อาจไม่ได้ใช้งานอย่างกว้างขวางกับผู้ให้ทั่ว ๆ ไป
ที่จะติดตั้งเพียง Nginx เพรียว ๆ

แต่ทุกผู้ให้บริการโฮสติ้ง (hosting providers)
ส่วนใหญ่ล้วนแต่ใช้ Nginx ร่วมกันกับ Apache ครับ
หรือบริการโฮสติ้งระดับพรีเมี่ยมติดตั้งเฉพาะ Nginx และ PHP-FPM.

Nginx Modules

โมดูลสำหรับ Nginx จะถูก build ติดตั้งมาพร้อมใช้งานอัตโนมัติ
และการเพิ่มโมดูลหลังการติดตั้งนั้นอาจจะมีความซับซ้อนกว่าเล็กน้อยอยู่บ้างครับ

ซึ่งตั้งแต่เวอร์ชัน 1.9.11 มีการเปลี่ยนแปลง modules repository ข้อมูลของโมดูลที่เป็น official/verified ถูกสงวนไว้สำหรับลูกค้าเท่านั้น

(โมดูลพรีเมียมเราไม่ฟรี 555+++)

และสำหรับ Nginx 1.16.1 ประกาศสนับสนุนโปรโตคอล QUIC
และ HTTP/3 ที่เร็วและปลอดภัย

ที่เปลี่ยนมาใช้ UDP ช่วยส่งข้อมูลแทน TCP
ออกแบบกระบวนการ handshake ใหม่
บีดให้รวม TLS มาด้วยเลย
(ซึ่งก็แปลว่า QUIC เข้ารหัสทุกกรณีเสมอ)

Nginx vs Apache vs Microsoft IIS

“ Apache ก็เหมือนกับ Microsoft Word มีตัวเลือกนับล้านแต่คุณต้องการเพียง 6 สิ่ง ซึ่ง NGINX ทำ 6 สิ่งนั้นมันถึงเร็วกว่า Apache ”

วลีเด็ด ๆ จาก – Chris Lea (Infrastructure geek and director of product @ joyent dot com)

“ Apache is like Microsoft Word. It has a million options but you only need six. NGINX does those six things, and it does five of them 50 times faster than Apache. ”

(ที่ว่า 50 เท่า แอดยังไม่มีข้อมูล 55+++)
ว่าแต่ 6 สิ่งอย่างของอีตานี่มีไรบ้างอ่าาา 😂😂😂

ใครเพลิน อ่านจนจบ
พิมพ์ อ่านจบ ก่อนกดแชร์ มาหน่อยครับ
🙏🙏🙏

Source:
Apache License รุ่น 2.0
http://www.apache.org/licenses/LICENSE-2.0
Nginx vs. Apache
www.nginx.com/blog/nginx-vs-apache-our-view/

Leave a Reply

Scroll to top