温馨提示×

ubuntu php fpm怎么连接nginx

小樊
51
2026-09-04 12:53:33
栏目: 编程语言

在 Ubuntu 上让 PHP-FPM 和 Nginx 配合使用,核心就是:
Nginx 把 PHP 请求通过 FastCGI 转给 PHP-FPM 处理。

下面一步步说明(以 Ubuntu 20.04 / 22.04 为例)。


一、安装 Nginx 和 PHP-FPM

sudo apt update
sudo apt install nginx php-fpm

安装后一般会有:

  • PHP-FPM 服务:php8.1-fpm(版本可能不同)
  • Socket 文件:/run/php/php8.1-fpm.sock

查看 PHP 版本:

php -v

二、确认 PHP-FPM 运行方式(sock 或端口)

推荐方式:Unix Socket(默认)

查看 PHP-FPM 配置:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

确认这一行存在(一般默认):

listen = /run/php/php8.1-fpm.sock

重启 PHP-FPM:

sudo systemctl restart php8.1-fpm

三、配置 Nginx 连接 PHP-FPM

示例:站点配置

编辑 Nginx 站点配置:

sudo nano /etc/nginx/sites-available/default

改成类似下面这样(重点看 location ~ \.php$):

server {
    listen 80;
    server_name your_domain_or_ip;
    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.1-fpm.sock;
    }
}

四、测试 PHP 是否正常工作

创建测试文件:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

检查 Nginx 配置:

sudo nginx -t

重启 Nginx:

sudo systemctl restart nginx

浏览器访问:

http://服务器IP/info.php

能看到 PHP 信息页就成功了 ✅


五、常见问题

1. 502 Bad Gateway

通常是:

  • fastcgi_pass 的 socket 路径写错
  • PHP-FPM 没启动

检查:

systemctl status php8.1-fpm
ls -l /run/php/

2. 权限问题

确保 Nginx 用户(www-data)能访问 socket:

ps aux | grep nginx
ps aux | grep php-fpm

PHP-FPM 用户一般也是 www-data


六、(可选)使用 TCP 端口方式

如果你要用端口(不推荐本地用):

PHP-FPM:

listen = 127.0.0.1:9000

Nginx:

fastcgi_pass 127.0.0.1:9000;

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • 是否用 Docker / 局域网 / 多站点

我可以给你更精确的配置。

0 踩