0Pricing
PHP Academy · บทเรียน

การกำหนดค่า Nginx และ PHP-FPM

ตั้งค่า Nginx เป็นพร็อกซีย้อนกลับไปยัง PHP-FPM เพื่อให้บริการแอปพลิเคชัน PHP

การกำหนดค่า Nginx และ PHP-FPM เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงใช้ Nginx + PHP-FPM

Nginx เป็นเว็บเซิร์ฟเวอร์และพร็อกซีย้อนกลับประสิทธิภาพสูง PHP-FPM (ตัวจัดการกระบวนการ FastCGI) จัดการกลุ่มกระบวนการเวิร์กเกอร์ PHP โดย Nginx จะส่งคำขอ PHP ไปยัง FPM ผ่าน FastCGI

บล็อกเซิร์ฟเวอร์ Nginx พื้นฐาน

การกำหนดค่า Nginx ขั้นต่ำสำหรับแอปพลิเคชัน PHP

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name example.com;
    root /srv/myapp/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

คำสั่ง try_files

try_files $uri $uri/ /index.php?$query_string จะพยายามให้บริการไฟล์แบบคงที่ก่อน หากไม่พบไฟล์ ระบบจะใช้ index.php เป็นทางเลือกสำรอง ซึ่งทำให้การกำหนดเส้นทางผ่านตัวควบคุมหลักทำงานได้ (Laravel, Symfony)

การกำหนดค่ากลุ่ม PHP-FPM

กำหนดค่ากลุ่มเวิร์กเกอร์ใน /etc/php/8.3/fpm/pool.d/www.conf

[www]
pm = dynamic
pm.max_children      = 20
pm.start_servers     = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests      = 500  ; recycle workers to prevent leaks

ซ็อกเก็ต Unix เทียบกับ TCP

การใช้ซ็อกเก็ต Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) เร็วกว่า TCP (127.0.0.1:9000) สำหรับการสื่อสารภายในเครื่องเดียวกัน

HTTPS ด้วย Let's Encrypt

ใช้ Certbot เพื่อขอใบรับรอง TLS ฟรี

$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewal

การบีบอัด Gzip

เปิดใช้ gzip เพื่อลดขนาดการตอบกลับ

# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;

การแคชทรัพยากรแบบคงที่ในเบราว์เซอร์

เพิ่มส่วนหัวควบคุมแคชสำหรับไฟล์แบบคงที่

location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

การจำกัดอัตราใน Nginx

จำกัดจำนวนคำขอต่อ IP โดยใช้โมดูล limit_req ซึ่งเป็นแนวป้องกันด่านแรกก่อนที่ PHP จะเริ่มทำงาน

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}

server {
    location /api/ {
        limit_req zone=one burst=20 nodelay;
    }
}

ส่วนหัวด้านความปลอดภัย

เพิ่มส่วนหัวด้านความปลอดภัยให้กับการตอบกลับทั้งหมด

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";

โหลดใหม่เทียบกับเริ่มใหม่

หลังเปลี่ยนการกำหนดค่า Nginx ให้โหลดใหม่อย่างนุ่มนวล (โดยไม่หยุดให้บริการ): nginx -t && nginx -s reload หลังเปลี่ยนการกำหนดค่า PHP-FPM ให้ใช้: systemctl reload php8.3-fpm

สรุป

กำหนดค่า Nginx ด้วยบล็อกเซิร์ฟเวอร์ที่ชี้ไปยัง public/index.php ผ่าน FastCGI ปรับแต่งการตั้งค่ากลุ่ม PHP-FPM ใช้ซ็อกเก็ต Unix เปิดใช้ HTTPS, gzip และการแคชไฟล์แบบคงที่

ตรวจสอบความเข้าใจ

try_files $uri $uri/ /index.php?$query_string ทำหน้าที่อะไร

คำถามที่พบบ่อย

บทเรียน “การกำหนดค่า Nginx และ PHP-FPM” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกำหนดค่า Nginx และ PHP-FPM” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดค่า Nginx และ PHP-FPM”

ตั้งค่า Nginx เป็นพร็อกซีย้อนกลับไปยัง PHP-FPM เพื่อให้บริการแอปพลิเคชัน PHP คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การกำหนดค่า Nginx และ PHP-FPM” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดค่า Nginx และ PHP-FPM
  2. ตัวแปรสภาพแวดล้อมและไฟล์ .env
  3. การนำไปใช้งานด้วย GitHub Actions
  4. การสร้างอิมเมจ Docker สำหรับแอปพลิเคชัน PHP
← กลับไปที่ PHP Academy