Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx中unix socket和tcp socket的区别是什么

Nginx中unix socket和tcp socket的区别是什么

作者头像
会长君
发布于 2023-04-26 05:12:17
发布于 2023-04-26 05:12:17
8310
举报
文章被收录于专栏:linux教程linux教程

这篇文章主要介绍“Nginx中unix socket和tcp socket的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nginx中unix socket和tcp socket的区别是什么”文章能帮助大家解决问题。

Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。

TCP和unix domain socket方式对比

TCP是使用TCP端口连接127.0.0.1:9000,Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多)

fastcgi_pass unix:/tmp/php-cgi.sock fastcgi_pass 127.0.0.1:9000

服务器压力不大的情况下,tcp和socket差别不大,但在压力比较满的时候,用套接字方式,效果确实比较好。

下面是php 5.3以上版本将TCP改成socket方式的配置方法:

修改php-fpm.conf(/usr/local/php/etc/php-fpm.conf)

;listen = 127.0.0.1:9000 listen = /dev/shm/php-cgi.sock

修改nginx配置文件server段的配置,将http的方式改为socket方式

location ~ .*.(php|php5)?$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; }

重启php-fpm与nginx

service nginx restart service php-fpm restart ls -al /dev/shm

可以看到php-cgi.sock文件unix套接字类型,理论上,unix socket 不走网络,效率高一些,但稳定性不是很理想。

关于“Nginx中unix socket和tcp socket的区别是什么”的内容就介绍到这里了,感谢大家的阅读。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx和php-fpm通信,使用unix socket还是TCP及其配置
nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socke方式。两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能、安全性等做出总结。
lukachen
2023/10/22
1.7K0
Nginx中fastcgi_pass的配置问题[通俗易懂]
Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket. 其中TCP是IP加端口,可以跨服务器.而UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.用哪种取决于你的PHP-FPM配置: 方式1: php-fpm.conf: listen = 127.0.0.1:9000 nginx.conf: fastcgi_pass 127.0.0.1:9000; 方式2: php-fpm.conf: listen = /tmp/php-fpm.sock nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock; 其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw—-.
全栈程序员站长
2022/09/08
2K0
PHP-FPM+Nginx通信原理图文剖析
PHP-FPM的全称是PHP FastCGI Process Manager,PHP-FPM是FastCGI的实现,并提供了进程管理的功能。FastCGI进程包含master进程和worker进程两种进程。master进程只有一个,负责监听端口,接收Nginx的请求,而worker进程则一般有多个(可配置),每个进程内部都嵌入了一个PHP解释器,是PHP代码真正执行的地方。
Tinywan
2023/11/17
6850
PHP-FPM+Nginx通信原理图文剖析
php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
在升级了php7.3.2版本之后,重新启动php-fpm过程中遇到一个报错。 An another FPM instance seems to already listen on /tmp/php-cgi.sock netstat -ant | grep 9000 //查看启动进程,发现没启动成功 我们去查看一下php-fpm.conf里面的配置: vim /usr/local/php/etc/php-fpm.conf [www] listen = /tmp/php-cgi.sock //注意
Lansonli
2021/10/09
2.3K0
Nginx+PHP-FPM的域Socket配置方法
马哥linux运维 | 最专业的linux培训机构 ---- 1什么是域Socket “Unix domain socket 或者 IPCsocket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流数和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组
小小科
2018/05/02
9180
详解 Nginx 和 php-fpm 调用方式
PHP 项目使用 Nginx 时,一般通过 php-fpm Nginx+PHP-FPM 形式访问交互,本文将详细解读 Nginx 配置文件、PHP-FPM、PHP-CGI 和 fastCGI 的概念。
Yangsh888
2022/03/28
2.7K0
nginx + php-fpm 性能调优
对于PHP服务而言,nginx + php-fpm 是常用的服务配置,如何进行服务器性能调优是一个服务端开发的必备技能。
用户3147702
2022/06/27
1.5K0
phpstudy nginx配置_phpstorm配置php环境
nginx 是一个高性能的http服务器和反向代理服务器。即nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为一个反向代理服务器进行负载均衡。但需要注意的是:nginx本身并不会对php文件进行解析。对PHP页面的请求将会被nginx交给FastCGI进程监听的IP地址及端口,由php-fpm(第三方的fastcgi进程管理器)作为动态解析服务器处理,最后将处理结果再返回给nginx。即nginx通过反向代理功能将动态请求转向后端php-fpm,从而实现对PHP的解析支持,这就是Nginx实现PHP动态解析的基本原理。
全栈程序员站长
2022/11/09
2.7K0
phpstudy nginx配置_phpstorm配置php环境
php-fpm报502问题「建议收藏」
搭建lnmp完lnmp环境后,测试时出现502报错,看到这个问题,我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的进程,发现是有的,这时我有查看nginx的错误日志,发现错误信息是:
全栈程序员站长
2022/07/18
4980
php-fpm报502问题「建议收藏」
nginx php-fpm 配置不当,引起的php文件无法执行
网站是用nginx服务的。 网上很多情况是因为nginx配置中 location ~ .php$ { # root html; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
conanma
2021/12/05
2.1K0
了解PHP-FPM
在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?
硬核项目经理
2019/11/19
1.6K0
Nginx防盗链+Nginx访问控制+Nginx解析php相关配置+Nginx 代理
一、Nginx防盗链: 1.1 打开配置文件: /usr/local/nginx/conf/vhost/haha.com.conf 增加如下配置文件: location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.haha.com ; if ($invalid_referer) {
老七Linux
2018/05/09
1.1K0
分享一下php7和其他php多版本共存的配置教程
年前,终于迎来了期待已久的 php7 正式版,我也在第一时间就给博客用上了。性能确实有了质的飞跃,问题还是有不少的。比如鱼叔的微信插件在 php7 下面自动回复异常等。 为了继续使用微信插件,我只好将
张戈
2018/03/21
4.2K0
分享一下php7和其他php多版本共存的配置教程
【高级】PHP-FPM和Nginx的通信机制
每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通信。PHP 文件在服务器上的解析需要用到 PHP 解释器,再加上对应的 CGI 协议,从而使服务器可以解析到 PHP 文件。
全栈程序员站长
2022/07/08
4890
【高级】PHP-FPM和Nginx的通信机制
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
proxy_set_header Host $host:$server_port;
子润先生
2021/07/13
6270
工具系列 | PHP-FPM+Nginx 通信详解
PHP-FPM的全称是PHP FastCGI Process Manager,PHP-FPM是FastCGI的实现,并提供了进程管理的功能。FastCGI进程包含master进程和worker进程两种进程。master进程只有一个,负责监听端口,接收Nginx的请求,而worker进程则一般有多个(可配置),每个进程内部都嵌入了一个PHP解释器,是PHP代码真正执行的地方。
Tinywan
2023/03/08
3.3K0
工具系列 | PHP-FPM+Nginx 通信详解
Nginx中fastcgi_pass的配置问题
--------------------------------------------------
双面人
2020/02/13
4.6K0
Nginx——虚拟主机简介
Nginx服务部署在一台服务器上,通过IP、端口、域名对外实现多个访问入口,让客户端以为是多个服务器,这就是nginx虚拟主机。
思索
2024/08/16
1780
Nginx——虚拟主机简介
LNMP出现502 bad gateway的解决
问题:最近的抢购有点火,到点抢购的时候网站就会出现502 bad gateway错误 顶不住消费者的压力。
星哥玩云
2022/07/03
5410
LNMP出现502 bad gateway的解决
PHP-FPM+Nginx通信原理
用了这么久了PHP+Nginx了,你了解他们之间的通信原理吗?这一次做一回真正的PHPer(在上一篇文章里边已经全面介绍了CGI、FastCGI、PHP-FPM,所以本文对于这些概念不再介绍的那么详细)
猿哥
2019/11/23
1.5K0
相关推荐
nginx和php-fpm通信,使用unix socket还是TCP及其配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档