การกำหนดค่าเซิร์ฟเวอร์ Apache Web
ServBay ช่วยให้คุณบริหารจัดการและปรับแต่งซอฟต์แวร์ Apache Web Server ที่ติดตั้งมาพร้อมได้อย่างสะดวก ผ่านอินเทอร์เฟซผู้ใช้แบบกราฟิกของ ServBay คุณสามารถปรับแต่งการตั้งค่าหลัก ๆ ของ Apache ให้เหมาะกับแต่ละโปรเจกต์พัฒนาได้อย่างง่ายดาย
การเข้าถึงการตั้งค่า Apache
- เปิดแอปพลิเคชัน ServBay
- ที่แถบนำทางด้านซ้าย คลิก
เว็บเซิร์ฟเวอร์
- เลือกแท็บ
Apache
คุณจะเห็นหน้าการกำหนดค่าของ Apache ดังตัวอย่างด้านล่าง:
คำอธิบายการตั้งค่าหลัก
รายละเอียดของแต่ละฟีลด์การตั้งค่าในหน้า Apache มีดังนี้:
การตั้งค่าพื้นฐาน
- HTTP Port: พอร์ตสำหรับรับฟังคำขอ HTTP ของ Apache ค่าเริ่มต้นคือ
80
- HTTPS Port: พอร์ตสำหรับรับฟังคำขอ HTTPS ของ Apache ค่าเริ่มต้นคือ
443
- Server Name: ชื่อและพอร์ตของเซิร์ฟเวอร์เพื่อใช้ในการระบุตัวเองตามค่าเริ่มต้น
127.0.0.1
มักใช้สำหรับเข้าถึงแบบโลคอล - Server Root: โฟลเดอร์รากที่ใช้ติดตั้งซอฟต์แวร์ Apache หมายเหตุ: ที่นี่ไม่ใช่โฟลเดอร์หลักที่ใช้เก็บไฟล์เว็บไซต์ (โฟลเดอร์เว็บหลักสามารถตั้งแยกต่างหากตอนเพิ่มเว็บไซต์) แต่เป็นที่อยู่ของไฟล์โปรแกรม Apache โดยค่าเริ่มต้นมักเป็น
/Applications/ServBay/package/apache/current
การปรับแต่งประสิทธิภาพ (Performance Tuning)
- Timeout: เวลาสูงสุด (วินาที) ที่เซิร์ฟเวอร์จะรอการทำงาน I/O ก่อนยกเลิก ค่าเริ่มต้นคือ
300
วินาที - Max KeepAlive Requests: จำนวนคำขอสูงสุดที่อนุญาตบนการเชื่อมต่อแบบ KeepAlive เดียว
1000
อนุญาตให้มีการใช้ซ้ำคอนเน็กชันจำนวนมาก0
หมายถึงไม่จำกัด - KeepAlive Timeout: จำนวนวินาทีสูงสุดที่เซิร์ฟเวอร์จะรอคำขอถัดไปก่อนจะปิดคอนเน็กชัน KeepAlive ค่าเริ่มต้นคือ
60
วินาที - Keep Alive: เปิดหรือปิดการเชื่อมต่อ HTTP แบบ KeepAlive แนะนำให้ตั้งค่า
On
เพื่อประสิทธิภาพที่ดีกว่า - MPM StartServers: จำนวนโปรเซสลูกที่สร้างขึ้นเมื่อเซิร์ฟเวอร์เริ่มทำงาน
- MPM MaxSpareThreads: จำนวนสูงสุดของเธรดว่างไว้ เพื่อเตรียมพร้อมรับคำขอที่ปริมาณสูงแบบฉับพลัน
- MPM MaxConnectionsPerChild (รู้จักในชื่อเดิมว่า MaxRequestsPerChild): จำนวนคอนเน็กชั่นสูงสุดที่แต่ละโปรเซสลูกสามารถรับได้ตลอดอายุงาน
0
คือไม่จำกัด ช่วยป้องกันปัญหา memory leak ที่เกิดจากโปรเซสลูกทำงานนานเกินไป - MPM MaxRequestWorkers (ชื่อเดิม MaxClients): จำนวนคำขอสูงสุดที่สามารถจัดการได้พร้อมกันในเวลาเดียวกัน (รวมหลายโปรเซสลูก) นี่คือการตั้งค่าหลักด้านประสิทธิภาพของ Apache
- MPM ThreadsPerChild: จำนวนเธรดที่ถูกสร้างขึ้นต่อโปรเซสลูกหนึ่งตัว (ใช้กับ
worker
หรือevent
MPM เท่านั้น)
ฟีเจอร์และคุณสมบัติ (Features & Characteristics)
- Access File Name: คำสั่งที่ใช้กำหนดชื่อไฟล์ตั้งค่ากระจาย (Distributed Configuration) ปกติคือ
.htaccess
ใช้กำหนดว่าจะอนุญาตหรือปฏิเสธให้เว็บไซต์ใช้ไฟล์.htaccess
เพื่อ override การตั้งค่าหลักของเซิร์ฟเวอร์ - Use Canonical Name: ควบคุมวิธีที่ Apache สร้าง URL แบบอ้างถึงตัวเอง (
self-referencing
URLs) ตั้งค่าOff
จะยืดหยุ่นกว่า - Server Signature: เพิ่มข้อมูลเกี่ยวกับเวอร์ชันของเซิร์ฟเวอร์และชื่อ virtual host ที่ด้านล่างของหน้าที่เซิร์ฟเวอร์สร้างขึ้น (เช่น หน้าแสดงข้อผิดพลาด) เพื่อความปลอดภัยแนะนำให้ตั้งเป็น
Off
ในระบบ Production - Hostname Lookups: กำหนดให้ Apache ทำการ reverse DNS lookup จาก IP ของลูกค้าเป็นชื่อ host หรือไม่ ตั้งค่า
Off
จะช่วยให้ประสิทธิภาพดีกว่าเนื่องจาก DNS query อาจช้า - Server Tokens: ควบคุมปริมาณข้อมูลที่ส่งออกไปใน header
Server:
ของ HTTP response การตั้งค่าMinor
(เช่น Apache/2.4) จะปลอดภัยกว่าFull
(เช่น Apache/2.4.58 (Unix) PHP/8.3.1) ในขณะที่Prod
จะแสดงเพียงApache
เท่านั้น
การบริหารจัดการและบันทึก (Admin & Logging)
- Server Admin: ที่อยู่อีเมลสำหรับผู้ดูแลระบบที่แสดงในข้อความข้อผิดพลาดที่เซิร์ฟเวอร์ส่งกลับไปยังผู้ใช้
- Log Level: ระดับความละเอียดของข้อความที่บันทึกใน error log (
error_log
) ค่าwarn
เป็นค่าที่นิยม สามารถบันทึกข้อมูลตั้งแต่คำเตือนจนถึงข้อผิดพลาดร้ายแรง ระดับอื่น ๆ ได้แก่debug
,info
,notice
,error
,crit
,alert
,emerg
โมดูล (Modules)
บริเวณนี้จะแสดงรายการโมดูล Apache ที่มีอยู่ คุณสามารถเลือกเปิดใช้งานโมดูลที่ต้องการ หรือยกเลิกโมดูลที่ไม่ต้องการได้โดยการติ๊ก/ไม่ติ๊กในช่อง Common modules เช่น:
mod_rewrite
: สำหรับดัดแปลง URLmod_ssl
: รองรับ SSL/TLS (HTTPS)mod_deflate
: บีบอัดข้อมูลที่ส่งออกmod_expires
: ควบคุม header แคชmod_proxy
และโมดูลที่เกี่ยวข้อง: ใช้สำหรับ reverse proxymod_auth_basic
,mod_auth_digest
: รองรับมาตรฐาน authentication แบบ basic หรือ digest
หลังเปิดหรือปิดโมดูล คุณต้องบันทึกการตั้งค่า และในบางกรณีจำเป็นต้องรีสตาร์ตบริการ Apache เพื่อให้การเปลี่ยนแปลงมีผล
ดัชนีไดเรกทอรี (Directory Index)
- Directory Index: เมื่อมีการร้องขอ URL ที่ชี้ไปยังไดเรกทอรี Apache จะค้นหาไฟล์ตามลำดับรายชื่อในฟิลด์นี้ โดยจะส่งคืนไฟล์แรกที่เจอ ค่าเริ่มต้นคือ
index.html index.htm index.php
การตั้งค่า SSL/TLS
ส่วนนี้สำหรับตั้งค่าการให้บริการ HTTPS ของ Apache
- SSLCipherSuite / TLSCipherSuite: กำหนดกรณีใดที่เซิร์ฟเวอร์อนุญาตให้ใช้การเข้ารหัส การเลือก cipher ที่แข็งแกร่งและทันสมัยนั้นจำเป็นสำหรับความปลอดภัย ServBay มีค่ามาตรฐานที่แนะนำไว้ให้
- SSLProxyCipherSuite: กำหนด cipher สำหรับกรณีที่ Apache ทำหน้าที่เป็น reverse proxy
- SSLHonorCipherOrder:
On
คือให้เซิร์ฟเวอร์เลือก cipher suite ตามลำดับที่ตนเองตั้ง ไม่ยอมให้ client กำหนดเอง แนะนำให้ตั้งOn
- SSLStrictSNIVHostCheck:
On
คือหาก client ขอชื่อ virtual host ผ่าน SNI ไม่ตรงกับที่กำหนดจะปฏิเสธการเชื่อมต่อ เพิ่มความปลอดภัย - ProtocolHonorOrder: เหมือนกับ
SSLHonorCipherOrder
แต่ใช้สำหรับเลือกเวอร์ชันของโปรโตคอล - SSLProtocol: กำหนดว่าเซิร์ฟเวอร์จะรองรับโปรโตคอลเวอร์ชันใด เช่น
all -SSLv2 -SSLv3
คืออนุญาตทั้งหมด ยกเว้น SSLv2, SSLv3 ที่ล้าสมัยและไม่ปลอดภัย - SSLProxyProtocol: สำหรับการเชื่อมต่อ SSL ขณะทำงานเป็น reverse proxy ให้อนุญาตเวอร์ชันโปรโตคอลใด
- Protocols: จัดลำดับการเจรจาโปรโตคอลการเชื่อมต่อ เช่น เปิด http/2 โดยเรียงลำดับเป็น
h2 h2c http/1.1
คือใช้ HTTP/2 (แบบเข้ารหัสh2
หรือธรรมดาh2c
) ก่อน แล้ว fallback ไป HTTP/1.1
การบันทึกและการรีเซ็ต
- Reset: คลิกปุ่มนี้เพื่อคืนค่าการตั้งค่า Apache ทั้งหมดกลับไปเป็นค่าเริ่มต้นของ ServBay
- Save: คลิกปุ่มนี้เพื่อบันทึกการเปลี่ยนแปลงในการตั้งค่า Apache หลังบันทึก ServBay จะเปิดใช้งานการเปลี่ยนแปลงอัตโนมัติ ในกรณีที่บริการ Apache กำลังทำงาน อาจต้องรีสตาร์ตแบบรวดเร็วเพื่อให้ทุกการตั้งค่ามีผล
หมายเหตุสำคัญ
- ส่วนที่ปรับเปลี่ยนในที่นี้คือการตั้งค่าระดับระบบของ Apache หากต้องการปรับสำหรับเว็บไซต์ใดเว็บไซต์หนึ่ง (virtual host) เช่น
DocumentRoot
หรือRewriteRule
แบบเฉพาะเจาะจง ให้เข้าไปตั้งที่เมนูเว็บไซต์
(Websites) ตอนเพิ่มหรือแก้ไขเว็บไซต์ - หากพบข้อความ "Service Apache is not enabled" ที่ด้านบนสุดของหน้าแสดงว่า Apache ยังไม่ทำงาน คุณยังคงสามารถแก้ไขและบันทึกการตั้งค่าได้ แต่การเปลี่ยนแปลงจะมีผลเมื่อคุณเปิดใช้ Apache ครั้งถัดไป สามารถสั่งเปิดจากแผงควบคุมหลักของ ServBay หรือเมนู
แพ็คเกจ
(Packages)
สรุป
ServBay มอบอินเทอร์เฟซที่ใช้งานง่ายเพื่อบริหารจัดการการตั้งค่าหลักของ Apache Web Server เพียงคุณเข้าใจและเลือกปรับแต่งค่าต่าง ๆ ได้ตามความต้องการพัฒนา ก็จะสามารถเพิ่มประสิทธิภาพ การรักษาความปลอดภัย และศักยภาพของ Apache ภายใต้ ServBay เพื่อเป็นสภาพแวดล้อมการพัฒนาบนเครื่องของคุณอย่างสมบูรณ์