- กฎการเขียนซ้ำ (Rewriting) และการเปลี่ยนเส้นทาง (Redirection)
- ให้บริการเนื้อหาแบบไดนามิก (Dynamic Content)
- การเพิ่มประสิทธิภาพบัฟเฟอร์ (Buffers) NGINX การหมดเวลา (Timeouts) และการตั้งค่าอื่นๆ
การทำความเข้าใจและเชี่ยวชาญเทคนิคการกำหนดค่าขั้นสูงใน NGINX สามารถเปลี่ยนการทำเว็บและทำแอพของคุณจากดีเป็นดี พลังและความยืดหยุ่นของ NGINX ช่วยให้คุณสร้างประสบการณ์การทำเว็บและทำแอพที่เหมาะสมที่สุด รวดเร็ว และปลอดภัย ในบทความนี้ เราจะเจาะลึกการกำหนดค่าขั้นสูงของ NGINX รวมถึงกฎการเขียนใหม่และการเปลี่ยนเส้นทาง การแสดงเนื้อหาแบบไดนามิก และการปรับบัฟเฟอร์ NGINX ให้เหมาะสม การหมดเวลา และการตั้งค่าอื่นๆ ในการทำเว็บและทำแอพ
1. กฎการเขียนซ้ำ (Rewriting) และการเปลี่ยนเส้นทาง (Redirection)
การเขียนซ้ำและการเปลี่ยนเส้นทางเป็นส่วนสำคัญในการสร้างประสบการณ์การทำเว็บและทำแอพ เพื่อให้ผู้ใช้ของคุณสามารถไปยังส่วนต่างๆ ของแพลตฟอร์มได้อย่างราบรื่น NGINX มอบวิธีที่มีประสิทธิภาพและยืดหยุ่นในการจัดการสิ่งเหล่านี้ด้วยคำสั่ง rewrite
และ return
คำสั่ง
กฎการเขียนใหม่ใน NGINX ช่วยให้คุณเปลี่ยนคำขอ URL ภายในหรือเปลี่ยนเส้นทางคำขอไปยัง URL อื่นได้ ตัวอย่างเช่น สมมติว่าคุณมี URL เก่า /old_path/old_page.html
ซึ่งจำเป็นต้องเปลี่ยนเส้นทางไปยัง URL /new_path/new_page.html
ใหม่ วิธีตั้งค่ากฎการเขียนซ้ำมีดังนี้
rewrite ^/old_path/old_page.html$ /new_path/new_page.html permanent;
คำสั่งนี้ทำให้ NGINX เปลี่ยนเส้นทางคำขอใดๆ ไปยัง URL เก่าไปยัง URL ใหม่ โดยมีสถานะ HTTP 301 ย้ายอย่างถาวร
แม้ว่ากฎการเขียนใหม่อาจมีประสิทธิภาพ แต่ขอแนะนำให้ใช้ คำสั่ง return
และ try_files
หากเป็นไปได้เพื่อการกำหนดค่าที่ง่ายและชัดเจนยิ่งขึ้น return
ทำให้ NGINX หยุดการประมวลผลและส่งคืนโค้ดที่ระบุ ในขณะที่ try_files
ตรวจสอบไฟล์ตามลำดับและส่งคืนโค้ดแรกที่พบ
2. ให้บริการเนื้อหาแบบไดนามิก (Dynamic Content)
เพื่อมอบประสบการณ์การทำเว็บและทำแอพที่มีประสิทธิภาพ NGINX มักใช้ร่วมกับซอฟต์แวร์อื่นเพื่อให้บริการเนื้อหาแบบไดนามิก ตัวอย่างเช่น สำหรับแอปพลิเคชัน PHP คุณมักจะใช้ PHP-FPM (FastCGI Process Manager) สิ่งนี้จำเป็นต้องกำหนดค่า NGINX เพื่อส่งคำขอ PHP ไปยัง PHP-FPM
ก่อนอื่น ให้ติดตั้ง PHP และ PHP-FPM จากนั้นแก้ไขบล็อกเซิร์ฟเวอร์ของคุณในไฟล์การกำหนดค่า NGINX:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
ในการกำหนดค่านี้ คำขอใดๆ ที่ลงท้ายด้วย .php
จะถูกส่งผ่านไปยังเซิร์ฟเวอร์ FastCGI ที่ซ็อกเก็ตที่ระบุ แยกเส้นทาง fastcgi_split_path_info
ของไฟล์สคริปต์และข้อมูลเส้นทาง ทำให้มี URL ที่สวยงามในแอปของคุณ
ในทำนองเดียวกัน คุณสามารถกำหนดค่า NGINX ให้ทำงานร่วมกับแอปพลิเคชัน Python โดยใช้แอปพลิเคชัน uWSGI, Ruby พร้อม Passenger และแอปพลิเคชัน Node.js ด้วยการตั้งค่าพร็อกซีย้อนกลับ
3. การเพิ่มประสิทธิภาพบัฟเฟอร์ (Buffers) NGINX การหมดเวลา (Timeouts) และการตั้งค่าอื่นๆ
NGINX มีการตั้งค่ามากมายเพื่อเพิ่มประสิทธิภาพประสบการณ์เว็บและแอพสำหรับผู้ใช้ของคุณ การปรับแต่งการตั้งค่าเหล่านี้จะทำให้เซิร์ฟเวอร์ของคุณมีประสิทธิภาพมากขึ้น ตอบสนองได้ดีขึ้น และเหมาะสมกับรูปแบบการรับส่งข้อมูลเฉพาะของคุณมากขึ้น
- บัฟเฟอร์ (Buffers) : การตั้งค่าบัฟเฟอร์กำหนดวิธีที่ NGINX จะจัดเก็บข้อมูลคำขอของลูกค้า NGINX ใช้บัฟเฟอร์เพื่อจัดการความไม่เสถียรของเครือข่ายและความแตกต่างของความเร็วไคลเอนต์ ด้วยการเพิ่มหรือลดจำนวนบัฟเฟอร์และขนาดของบัฟเฟอร์ คุณสามารถปรับประสิทธิภาพของเซิร์ฟเวอร์ NGINX ตามความต้องการของแอปและทรัพยากรระบบ หากเซิร์ฟเวอร์ของคุณจัดการกับไฟล์ขนาดใหญ่บ่อยครั้ง การเพิ่มขนาดบัฟเฟอร์อาจปรับปรุงประสิทธิภาพได้
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
- การหมดเวลา (Timeouts) : การหมดเวลากำหนดระยะเวลาที่ NGINX จะรอสำหรับการสื่อสารบางประเภท ได้แก่
client_body_timeout
,client_header_timeout
,keepalive_timeout
,send_timeout
และ ตัวอย่างเช่นkeepalive_timeout
หมดเวลาระหว่างที่การเชื่อมต่อไคลเอ็นต์แบบ Keep-alive จะยังคงเปิดอยู่ที่ฝั่งเซิร์ฟเวอร์ การปรับค่าเหล่านี้สามารถช่วยจัดการทรัพยากรได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับแอปที่มีการเข้าชมสูง
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
- กระบวนการและการเชื่อมต่อของผู้ปฏิบัติงาน (Worker Processes and Connections) : การตั้งค่าเหล่านี้ส่งผลต่อวิธีที่ NGINX จัดการกับคำขอ NGINX ได้รับการออกแบบมาเพื่อสร้างกระบวนการ “worker_processes” หลายกระบวนการ ซึ่งแต่ละกระบวนการสามารถจัดการการเชื่อมต่อจำนวนมากได้ คำสั่ง
worker_processes
จะกำหนดจำนวนการประมวลผลของระบบผู้ปฏิบัติงานที่จะรัน ในขณะที่worker_connections
ระบุจำนวนสูงสุดของการเชื่อมต่อพร้อมกันที่ผู้ปฏิบัติงานแต่ละคนสามารถจัดการได้
worker_processes auto;
events {
worker_connections 1024;
}
ในการกำหนดค่านี้ auto
อนุญาตให้ NGINX เลือกจำนวนกระบวนการของผู้ปฏิบัติงานที่เหมาะสมตามจำนวนคอร์ CPU ที่มีอยู่
โปรดจำไว้ว่าการปรับการตั้งค่าเหล่านี้ให้เหมาะสมนั้นจำเป็นต้องมีความเข้าใจที่ชัดเจนเกี่ยวกับแอปและข้อกำหนดการรับส่งข้อมูลเฉพาะของคุณ นอกจากนี้ แนวทางปฏิบัติที่ดีในการตรวจสอบประสิทธิภาพเซิร์ฟเวอร์ของคุณและปรับการตั้งค่าเหล่านี้ตามความจำเป็น
การกำหนดค่า NGINX ขั้นสูงช่วยให้นักพัฒนาสามารถมอบประสบการณ์การทำเว็บและทำแอพที่มีประสิทธิภาพสูง ปรับขยายได้ และหลากหลาย การเรียนรู้การเขียนซ้ำ (rewrites) และการเปลี่ยนเส้นทาง (redirections) การแสดงเนื้อหาแบบไดนามิก (dynamic content) และการปรับการตั้งค่าให้เหมาะสมสำหรับบัฟเฟอร์ (buffers) การหมดเวลา (timeouts) และกระบวนการของผู้ปฏิบัติงานสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณได้อย่างมาก โปรดจำไว้ว่า แม้ว่าการกำหนดค่าที่กล่าวถึงในที่นี้จะเป็นแนวทางปฏิบัติทั่วไป ให้ปรับแต่งการตั้งค่าของคุณให้ตรงตามความต้องการเฉพาะของคุณเสมอ และตรวจสอบประสิทธิภาพเซิร์ฟเวอร์ของคุณสำหรับการปรับเปลี่ยนที่จำเป็นในการทำเว็บและทำแอพ