nginx配置php-fpm socket连接

本文介绍如何将Nginx与PHP-FPM通过Unix域套接字连接,提高服务器性能。包括修改php-fpm.conf和nginx.conf文件的具体步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于nginx连接fastcgi的有两种方式:Tcp和Socket
1、Tcp是使用TCP端口连接127.0.0.1:9000
2、Socket是使用unix domain socket连接套接字:php-fpm.sock
两种的连接方式的比较:
在服务器压力不大的情况下,tcp和socket差别不大,但在压力比较满的时候,用套接字方式,效果确实比较好
nginx默认的配置过程是tcp连接,接下来我说一下我配置socket的过程和踩的坑

1、配置第一步:在你的php-fpm.conf文件中将

listen = 127.0.0.1:9000

修改为

listen = /path/php-fpm.sock

,并且将

;listen.owner = www                                                                                  
;listen.group = www

注释去掉,用户名和祖名对应nginx的 用户名和组名

2、修改nginx.conf文件中的fastcgi_pass

fastcgi_pass   127.0.0.1:9000;

修改为

fastcgi_pass   unix:/path/php-fpm.sock;

3、重启nginx和php-fpm

./sbin/nginx -s reolad
./sbin/php-fpm.sock

我的失误是没有将php-fpm.conf中的被监听的用户名和组名的注释去掉

;listen.owner = www                                                                                  
;listen.group = www

希望能带给大家帮助

### 如何配置 Nginx 使用 PHP-FPM #### 配置概述 为了使Nginx能够处理PHP请求,需要将其与PHP-FPM集成。这涉及到修改Nginx配置文件来指定当接收到特定类型的请求时应转发到哪个FastCGI处理器,在本案例中即为PHP-FPM。 #### 编辑 Nginx 主要配置文件 主要配置通常位于`/etc/nginx/nginx.conf`或通过包含指令引入其他位置的文件内。对于大多数情况来说,默认站点配置可能存在于`/etc/nginx/sites-available/default`并通过符号链接连接至`sites-enabled`目录下[^2]。 编辑此文件以添加如下所示的部分: ```nginx server { listen 80; server_name localhost; root /var/www/html; # 设置Web根目录 index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 或者使用TCP: "fastcgi_pass 127.0.0.1:9000;" fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 上述代码片段展示了如何设置一个基本的虚拟主机配置,它会将所有`.php`结尾的URL映射到本地运行的PHP-FPM实例上。这里指定了Unix域套接字作为通信机制,因为其性能优于基于网络的方式[^4]。 #### 调整 PHP-FPM 的池配置 除了调整Nginx外,还需要确保PHP-FPM已正确配置以便接收来自Nginx的请求。一般而言,这些设定可以在`/etc/php/7.x/fpm/pool.d/www.conf`(取决于具体版本)找到,并且应当确认以下参数已被适当设置: - `listen`: 定义了FPM监听的位置,可以是一个IP地址加端口号或者是Unix Socket路径。 - `clear_env`: 推荐设为no以防某些环境变量丢失。 - `catch_workers_output`: 设定为yes有助于调试目的。 最后一步是重启服务让更改生效: ```bash sudo systemctl restart nginx.service sudo systemctl restart php7.4-fpm.service ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值