Khởi tạo VPS trong 60 giây · Hoàn tiền trong 7 ngày · Hỗ trợ kỹ thuật 24/7
Bitech Bitech
Hướng dẫn

Hướng dẫn chi tiết cấu hình PHP-FPM với NGINX trên Ubuntu

Từng bước cài đặt PHP-FPM, thiết lập NGINX fastcgi_pass, khắc phục lỗi 502 Bad Gateway và tối ưu hóa tiến trình worker hiệu quả.

PHP-FPM (FastCGI Process Manager) là giải pháp xử lý PHP hiệu năng cao, thường được kết hợp với NGINX để tối ưu tốc độ và khả năng chịu tải cho ứng dụng web. Trong bài viết này, Bitech sẽ hướng dẫn bạn cách thiết lập PHP-FPM làm việc cùng NGINX trên Ubuntu, xử lý các sự cố phổ biến và căn chỉnh tham số hệ thống.

Bước 1: Cài đặt PHP-FPM và NGINX

Trước tiên, bạn cần cập nhật danh sách gói hệ thống và cài đặt NGINX cùng phiên bản PHP-FPM phù hợp:

sudo apt update
sudo apt install nginx php-fpm -y

Kiểm tra phiên bản PHP-FPM đã được cài đặt (ví dụ: php8.1-fpm hoặc php8.2-fpm) để xác định đúng đường dẫn cấu hình ở các bước tiếp theo.

Bước 2: Cấu hình PHP-FPM Pool

Tệp cấu hình pool mặc định của PHP-FPM nằm tại /etc/php/8.x/fpm/pool.d/www.conf. Tại đây, bạn có thể thiết lập cách PHP-FPM lắng nghe kết nối từ NGINX (qua Unix Socket hoặc TCP Port).

Mở tệp cấu hình:

sudo nano /etc/php/8.x/fpm/pool.d/www.conf

Kiểm tra chỉ thị listen:

  • Sử dụng Unix Socket (khuyên dùng cho hiệu năng cao trên cùng một máy chủ): listen = /run/php/php8.x-fpm.sock
  • Sử dụng TCP Port: listen = 127.0.0.1:9000

Khởi động lại dịch vụ sau khi chỉnh sửa:

sudo systemctl restart php8.x-fpm

Bước 3: Định cấu hình NGINX kết nối với PHP-FPM

Mở tệp cấu hình Server Block của NGINX (mặc định tại /etc/nginx/sites-available/default) và bổ sung đoạn mã xử lý file PHP thông qua fastcgi_pass:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.x-fpm.sock;
    }

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

Lưu ý: Nếu cấu hình PHP-FPM dạng TCP, thay đường dẫn socket bằng fastcgi_pass 127.0.0.1:9000;.

Kiểm tra cú pháp và tải lại NGINX:

sudo nginx -t
sudo systemctl reload nginx

Bước 4: Khắc phục lỗi 502 Bad Gateway

Lỗi 502 Bad Gateway thường xuất hiện khi NGINX không thể giao tiếp được với PHP-FPM. Để xử lý lỗi này, bạn thực hiện theo các bước:

  1. Kiểm tra trạng thái service: Đảm bảo PHP-FPM đang hoạt động bằng lệnh sudo systemctl status php8.x-fpm.
  2. Khớp đường dẫn Socket/Port: Đảm bảo tham số fastcgi_pass trong NGINX trùng khớp hoàn toàn với thiết lập listen trong www.conf.
  3. Kiểm tra quyền truy cập Socket: Phải đảm bảo user chạy NGINX (www-data) có quyền đọc/ghi vào file socket (listen.owner = www-data, listen.group = www-data).

Bước 5: Tối ưu hóa Worker Processes

Để hệ thống phục vụ tải lớn tốt hơn, hãy tinh chỉnh các tham số tiến trình trong tệp www.conf:

  • pm = dynamic: Cho phép tạo tiến trình linh hoạt.
  • pm.max_children: Số lượng process con tối đa có thể khởi tạo (tính toán dựa trên tổng dung lượng RAM khả dụng).
  • pm.start_servers: Số process được tạo ngay khi khởi động PHP-FPM.
  • pm.min_spare_servers & pm.max_spare_servers: Giới hạn số process rảnh rỗi tối thiểu và tối đa giữ ở trạng thái chờ.

Ngày phát hành: 18/06/2026
Nguồn: www.digitalocean.com