1. Vì sao cấu hình Nginx ↔ PHP-FPM hay gây lỗi?
Trong thực tế vận hành Web Server, lỗi phổ biến nhất sau khi cài PHP là:
502 Bad Gateway
Website trắng trang
File PHP bị download thay vì thực thi
PHP chạy lúc được lúc không
Nguyên nhân thường không phải do PHP “hỏng”, mà do:
Nginx và PHP-FPM chưa được kết nối đúng cách.
Bài này tập trung vào:
Kết nối Nginx ↔ PHP-FPM chuẩn
Cấu hình tối thiểu nhưng đủ dùng
Tránh các lỗi cấu hình kinh điển
2. Nguyên tắc cấu hình PHP-FPM cho production
Trong loạt bài này, chúng ta tuân theo:
Dùng Unix socket
Không expose PHP-FPM ra Internet
Cấu hình rõ ràng, dễ đọc
Không “nhét” PHP logic vào Nginx
Mỗi bước đều kiểm tra lại
Nguyên tắc:
Nginx chỉ chuyển request, PHP-FPM chỉ xử lý PHP.
3. Xác định socket PHP-FPM
Trước khi cấu hình, cần xác định chính xác socket.
Với PHP 8.2:
Kiểm tra:
Nếu không thấy socket:
PHP-FPM có thể chưa chạy
Hoặc cài sai phiên bản

4. Cấu hình Nginx xử lý file PHP
4.1. Vị trí cấu hình
Mở file virtual host của website:
4.2. Thêm block xử lý PHP
Trong server block HTTPS, thêm:
Giải thích:
location ~ \.php$: bắt file PHPfastcgi_pass: trỏ tới socket PHP-FPMfastcgi-php.conf: cấu hình chuẩn của Ubuntu
Nguyên tắc:
Không tự viết lại fastcgi_param nếu chưa hiểu rõ.
5. Kiểm tra file fastcgi-php.conf
File mặc định nằm tại:
Nội dung chính:
Thiết lập SCRIPT_FILENAME
Truyền biến môi trường đúng cho PHP
Không chỉnh file này trừ khi:
Có yêu cầu đặc biệt
Hiểu rõ tác động
6. Đảm bảo Nginx và PHP-FPM có quyền truy cập socket
6.1. Kiểm tra quyền socket
Ví dụ:
Nginx chạy bằng user:
→ Quyền này là đúng và an toàn.

6.2. Nếu quyền sai
Không chmod 777
Không đổi owner bừa
Cần kiểm tra:
User chạy Nginx
User/group của PHP-FPM pool
Việc này sẽ được phân tích kỹ hơn ở bài cấu hình pool.
7. Test cấu hình PHP
7.1. Tạo file test PHP
Trong thư mục public của website:
Nội dung:
7.2. Reload Nginx
7.3. Truy cập kiểm tra
Truy cập:
Nếu thấy trang thông tin PHP:
PHP-FPM đã hoạt động đúng
Nginx ↔ PHP-FPM kết nối thành công
8. Xóa file test sau khi kiểm tra
Sau khi test xong:
Nguyên tắc:
Không để file phpinfo() trên production.
9. Các lỗi thường gặp và cách xử lý nhanh
9.1. 502 Bad Gateway
Kiểm tra:
PHP-FPM có chạy không:
Socket có tồn tại không
fastcgi_pass đúng đường dẫn

9.2. File PHP bị download
Nguyên nhân:
Chưa cấu hình block
.phpinclude sai file snippet
9.3. Permission denied
Nguyên nhân:
Quyền socket
Quyền thư mục web
Không xử lý bằng:
10. Checklist cấu hình PHP-FPM cho Nginx
PHP-FPM đang chạy
Xác định đúng socket
fastcgi_pass trỏ đúng
PHP file được thực thi
File test đã xóa
11. Bài tiếp theo
Trong Bài 28, chúng ta sẽ đi sâu vào hiệu năng PHP:
Tối ưu PHP-FPM: pool, process, memory
Bài này sẽ giúp:
PHP chạy ổn định khi tải tăng
Tránh nghẽn tài nguyên
Không “đoán mò” khi tuning
- Đăng nhập để gửi ý kiến