การตั้งค่า Apache และ Nginx สำหรับโดเมนบน Plesk

เมื่อคุณใช้งาน Plesk บนเซิร์ฟเวอร์ Cloud VPS ของ Dot Enterprise คุณจะพบว่า Plesk ถูกออกแบบให้ใช้งาน Apache และ Nginx ร่วมกันเพื่อให้ได้ประสิทธิภาพสูงสุด บทความนี้จะอธิบายวิธีการตั้งค่า Apache และ Nginx อย่างถูกต้องเพื่อให้เซิร์ฟเวอร์ของคุณทำงานได้อย่างเหมาะสม

Nginx และ Apache ทำงานร่วมกันในสถาปัตยกรรม Plesk อย่างไร

ใน Plesk บนระบบ Cloud VPS Nginx ทำหน้าที่เป็น reverse proxy ที่หน้าต่างเซิร์ฟเวอร์ (front-end) ขณะที่ Apache ทำงานเป็น backend server ที่จัดการกับการประมวลผลไฟล์ PHP และการดำเนิน PHP handlers ที่หลากหลาย

สถาปัตยกรรมนี้มีข้อดี:

  • Nginx มีน้ำหนักเบา เร็วมากในการให้บริการไฟล์คงที่และทำหน้าที่เป็น reverse proxy
  • Apache มีความยืดหยุ่นสูง รองรับ .htaccess และ mod_rewrite
  • การแยกหน้าที่นี้ช่วยให้ประสิทธิภาพดีขึ้นและโหลด HTTP ลดน้อยลง
  • ง่ายต่อการตั้งค่า HTTPS และ SSL certificates

การเปิด/ปิด Nginx สำหรับโดเมนแต่ละอัน

ใน Plesk Control Panel คุณสามารถควบคุมว่าจะใช้ Nginx สำหรับโดเมนใดบ้าง ทำตามขั้นตอนต่อไปนี้:

  • เข้าไปยัง Plesk Control Panel และเลือก “Domains” หรือ “Websites”
  • คลิกที่โดเมนที่ต้องการตั้งค่า
  • เลือก “Web Server” หรือ “Apache & Nginx Settings”
  • หากต้องการใช้ Nginx ให้เลือก “Process requests via Nginx”
  • หากต้องการปิด Nginx สำหรับโดเมนนี้ ให้เลือก “Process requests via Apache”
  • คลิก “Apply” เพื่อบันทึกการเปลี่ยนแปลง

โปรดทราบว่าการเปลี่ยนแปลงอาจใช้เวลาสักครู่ในการมีผล เนื่องจากต้องโหลดหน้าใหม่ บน Cloud VPS ของ Dot Enterprise โดยทั่วไปการเปลี่ยนจะมีผลภายในสองสามนาที

การตั้งค่า Apache Directives เพิ่มเติม

Apache Directives เป็นคำสั่งที่ให้คุณควบคุมพฤติกรรมของ Apache สำหรับโดเมนเฉพาะ ใน Plesk คุณสามารถเพิ่ม Additional Apache Directives ได้ดังนี้:

  • ไปที่โดเมนที่ต้องการในหน้า “Apache & Nginx Settings”
  • เลือก “Apache” แล้วเลือก “Additional directives for Apache”
  • เพิ่มคำสั่ง Apache ที่ต้องการ

ตัวอย่าง Apache Directives ที่มีประโยชน์:

<Directory /var/www/vhosts/yourdomain.com>
    Options FollowSymLinks Includes
    AllowOverride All
    Require all granted
</Directory>

# ตั้งค่า PHP handler
AddHandler application/x-httpd-php73 .php

# ตั้งค่า Memory Limit สำหรับ PHP
php_value memory_limit 256M
php_value max_execution_time 300

การตั้งค่า Nginx Directives

ในส่วน Nginx Settings คุณสามารถปรับแต่งการทำงานของ Nginx ได้ ตัวอย่าง Nginx directives ที่นิยมใช้:

# ตั้งค่า proxy สำหรับ Apache
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# ตั้งค่า Cache Headers
add_header Cache-Control "public, max-age=3600";

# ตั้งค่า Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;

PHP Handler: FastCGI และ PHP-FPM

Plesk รองรับหลายวิธีในการประมวลผล PHP โดยทั่วไปจะเลือกระหว่าง FastCGI และ PHP-FPM

  • FastCGI: เหมาะสำหรับเซิร์ฟเวอร์เล็กถึงกลาง ใช้ทรัพยากรน้อยกว่า
  • PHP-FPM (FastCGI Process Manager): เหมาะสำหรับเซิร์ฟเวอร์ที่มีจำนวน websites จำนวนมาก มีประสิทธิภาพดีกว่า

การเปลี่ยน PHP Handler ใน Plesk:

  • ไปที่ “Domains” และเลือกโดเมนที่ต้องการ
  • เลือก “PHP Settings”
  • เลือก “Handler” และเลือก FastCGI หรือ PHP-FPM ตามที่ต้องการ
  • บันทึกการเปลี่ยนแปลง

การตั้งค่า .htaccess บน Plesk

.htaccess เป็นไฟล์คำสั่งสำหรับ Apache ที่ให้คุณควบคุมพฤติกรรมของ Apache โดยไม่ต้องแก้ไขไฟล์ config หลัก ใน Plesk คุณสามารถใช้ .htaccess ได้โดยตรง

ตัวอย่าง .htaccess ที่มีประโยชน์:

# เปิด mod_rewrite
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # Redirect HTTP to HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    # Remove .php extension
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ $1.php [L]
</IfModule>

หลังจากสร้าง .htaccess ให้อัปโหลดไปยังโฟลเดอร์หลัก (public_html) ของเว็บไซต์ของคุณ Plesk จะจดจำได้โดยอัตโนมัติ

Custom Error Pages

การตั้งค่า Custom Error Pages ช่วยให้เว็บไซต์ดูเป็นมืออาชีพยิ่งขึ้น ใน Plesk ทำตามขั้นตอนต่อไปนี้:

  • เข้าไปยัง “Websites & Domains” ในหน้าของโดเมน
  • เลือก “Web Server” หรือ “Apache & Nginx Settings”
  • ค้นหาส่วน “Custom Error Pages”
  • อัปโหลดหรือสร้างไฟล์ HTML สำหรับข้อผิดพลาด เช่น error_404.html สำหรับ 404 errors
# ในส่วน Apache Directives
ErrorDocument 404 /error_404.html
ErrorDocument 500 /error_500.html
ErrorDocument 503 /error_503.html

การ Redirect HTTP ไปยัง HTTPS

การตั้งค่า HTTPS เป็นสิ่งสำคัญเพื่อรักษาความปลอดภัยของเว็บไซต์ Plesk ช่วยให้การตั้งค่า SSL/TLS ง่ายขึ้น ทำตามขั้นตอนต่อไปนี้:

  • ติดตั้ง SSL Certificate ก่อน (สามารถใช้ Let’s Encrypt ฟรี)
  • เข้าไป “Websites & Domains” และเลือกโดเมน
  • เลือก “Security” และตรวจสอบ “SSL/TLS certificate”
  • เปิด “Require SSL/TLS for this domain”

หรือใช้ .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Performance Tuning: Keep-Alive, Compression และ Caching

เพื่อให้เว็บไซต์ของคุณทำงานด้วยประสิทธิภาพสูง ลองตั้งค่าต่อไปนี้:

Keep-Alive Settings

Keep-Alive ช่วยให้การเชื่อมต่อ HTTP ยังคงเปิดอยู่เพื่อให้สามารถส่งคำขอหลายรายการได้ โดยไม่จำเป็นต้องสร้างการเชื่อมต่อใหม่ทุกครั้ง

<IfModule mod_keepalive.c>
    KeepAlive On
    KeepAliveTimeout 5
    MaxKeepAliveRequests 100
</IfModule>

Compression (Gzip)

Gzip compression ลดขนาดของไฟล์ที่ส่งจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์ได้มากถึง 70-80%

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
</IfModule>

Cache Headers

Cache Headers บอกให้เบราว์เซอร์และ CDN รู้ว่าควรจัดเก็บไฟล์ไว้นานเท่าใด

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 2 days"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>