热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginx自动下载与fasetcgi_pass

个人搭建好lnmp后访问php页面自动下载,也就是无法解析php文件最后查出没有于php建立通信导致location~\.php${fastcgi_pass12

个人搭建好lnmp后访问php页面

自动下载,也就是无法解析php文件

最后查出没有于php建立通信导致

location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;

        }

拿走不谢


下面是对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----.

UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.

UNIX Domain Socket:
Nginx <&#61;> socket <&#61;> PHP-FPM
TCP Socket(本地回环):
Nginx <&#61;> socket <&#61;> TCP/IP <&#61;> socket <&#61;> PHP-FPM
TCP Socket(Nginx和PHP-FPM位于不同服务器):
Nginx <&#61;> socket <&#61;> TCP/IP <&#61;> 物理层 <&#61;> 路由器 <&#61;> 物理层 <&#61;> TCP/IP <&#61;> socket <&#61;> PHP-FPM

像mysql命令行客户端连接mysqld服务也类似有这两种方式:
使用Unix Socket连接(默认):
mysql -uroot -p --protocol&#61;socket --socket&#61;/tmp/mysql.sock
使用TCP连接:

mysql -uroot -p --protocol&#61;tcp --host&#61;127.0.0.1 --port&#61;3306


有什么问题可以在下面评论&#xff0c;我会很快回复的

转载自  https://segmentfault.com/q/1010000004854045


推荐阅读
author-avatar
杨洋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有