通过配置nginx的fastcgi_pass指令指向php-fpm的unix socket或tcp端口,并设置正确的fastcgi_param参数(如script_filename)即可搭建高性能环境。推荐使用unix socket通信以降低网络开销,同时调整php-fpm的pm.max_children和request_terminate_timeout等参数以匹配服务器负载。

Nginx与PHP-FPM的连接方式如何选择
选择Unix Socket还是TCP连接主要取决于部署架构。在同一台服务器上,Unix Socket通常性能更高且更安全;跨服务器时则必须使用TCP。配置时需确保Nginx用户有权限访问Socket文件,或正确指定TCP地址和端口。

server {
listen 80;
server_name example.com;
root /var/www/html;
location ~ \.php$ {
# 使用Unix Socket (推荐)
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
# 或使用TCP (跨服务器)
# fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
}
PHP-FPM进程管理模型如何优化
PHP-FPM的进程管理器(pm)决定了如何处理并发请求。static模式固定进程数,适合高负载稳定场景;ondemand模式按需创建,适合低负载节省资源;dynamic模式动态调整,是大多数场景的最佳平衡点。需根据实际QPS调整max_children和start_servers。

[www] pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.process_idle_timeout = 10s pm.max_requests = 500
当PHP脚本执行时间超过限制时会发生什么
如果PHP脚本执行时间超过了php.ini中的max_execution_time或PHP-FPM配置的request_terminate_timeout,脚本将被强制终止。在Nginx中,这通常会导致502 Bad Gateway错误,因为后端FPM进程突然断开连接。建议合理设置超时时间并捕获异常。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











