Nginx本身是不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux 下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个 wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI 接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据 通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。

Nginx+FastCGI运行原理

修改主配置文件,如下:

# vim/usr/local/nginx/conf/nginx.conf

location / {

root   /www;

indexindex.htmlindex.htmindex.php;

}

location ~ \.php$ {

root           /www;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;

include        fastcgi_params;

}

//注:黑体www为web根目录,改成对应目录即可

location 定义文件类型, \.php$ 代表所有以 php 作为文件后缀的文件类型.

root 定义 php 文件存放的路径, 当前以 "/www" 作为默认存放位置.

fastcgi_index 定义 php 文件类型中的默认索引页

fastcgi_param SCRIPT_FILENAME 定义了页面请求参数, 如客户端需要访问 /t1.php 则会自动读取 /www/t1.php文件, 如客户端访问 / 则自动读取 /www/index.php 文件

include 定义fastcgi 配置信息将会被保存到 /usr/local/nginx/conf/fastcgi_params 文件中

nginx最常用的方法是利用 tcp/ip 协议连接 phpfastcgi 接口, 因此要连接php必须先启动fastcgi程序.

启动方法:

# /usr/local/bin/php-cgi-b 127.0.0.1:9000 -c /usr/local/lib/php.ini &

-b 用于指定监听地址与端口

如果想指定配置文件位置,可以使用-c选项

注意, nginx 服务器负责所有的客户端请求, 包括了静态网页解析 (html), 页面中的其他对象如 ccs文件jpg png文件等传输, 但遇到客户需要请求 php 页面请求或 php 源码解析时, nginx将会把页面传递到fastcgi接口, 由 php-cgi 程序进行解析.

当前php-cgi只启用一个进程应答nginx所有连接中的php请求, 假如nginx具有一定的并发连接,那么php-cgi 将会变得无法同时应付大量的工作, 并且返回网页临时不可用信息. 将会导致所有php连接无法返回数据结果,并返回错误信息。

为有效地解决php-cgi接口无法应答大量并发连接请求, 我们可以利用 spawn-fcgi或者php-fpm,稍后送上。

参考:terry《性能调优和安全》一书

南非蚂蚁《高性能Linux服务器构建实战》Nginx章节

nginx配置php 9000,Nginx支持php配置相关推荐

  1. 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办?

    易语言支持库配置闪退打不开怎么办? 易语言支持库配置闪退解决方法丨支持库配置崩溃_易语言打开支持 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办? 很多人都遇到过 打开易语言支 ...

  2. 记一次lnmp经历 nginx 多个php版本支持配置

    2019独角兽企业重金招聘Python工程师标准>>> 先叨叨点基本知识: 一个http请求,首先来到服务器的时候 nginx 监听的80端口会接收到这个请求,然后发给对应的 cgi ...

  3. ecshop支持mysql5.5吗,centos5.5 安装配置 ecshop【nginx + php + mysql】

    centos5.5 安装配置 ecshop[nginx + php + mysql] 备注:建议使用centos5.5作为ecshop的注意,因为centos6的最新版本都是5.3以上的,所以而ecs ...

  4. FreeBSD下nginx并支持php配置详解

    Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为 ...

  5. nginx支持php怎么配置,nginx支持php配置

    nginx支持php配置 配置php-fpm php版本 php-5.2.13 php-fpm版本 php-5.2.13-fpm-0.5.13.diff.gz 编译php前先加载补丁 如果不加不定,直 ...

  6. NGINX发布支持动态配置的开源Web服务器

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ NGINX最近发布了NGINX Unit 1.0版.NGINX Unit是一种开源的Web和 ...

  7. Linux部署动态网页,Nginx发布支持动态配置的开源Web服务器

    NGINX最近发布了NGINX Unit 1.0版.NGINX Unit是一种开源的Web和应用服务,它支持远程配置和动态配置,使得配置上的更改不会对服务造成中断.Unit 1.0还支持在同一实例中运 ...

  8. 在阿里云centos7.4上配置nginx免费的https证书,支持泛解析

    在阿里云centos7.4上配置nginx免费的https证书,支持泛解析 一 原理说明: 使用acme.sh工具来生成证书,但为了方面采用的使用dns添加TXT记录验证方式,跟传统的webroot有 ...

  9. nginx 二级目录 php,Nginx 配置二级目录支持

    Nginx 配置二级目录并不像 apache 那么简单,但二级目录的配置在实际工作中又经常用到,现整理如下.欢迎大家访问 二愣的闲谈杂鱼 在 /etc/nginx 目录下创建文件夹 sublocati ...

最新文章

  1. luoguP4503 [CTSC2014]企鹅QQ hash
  2. python3语法、菜鸟教程_Python3
  3. B. Bogosort codeforces(思维)
  4. python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...
  5. django之auth模块
  6. python求众数代码_python-LeetCode-求众数
  7. 电大计算机网络技术基础,电大--2016年电大 计算机与网络技术基础小抄已排版.doc...
  8. 通信工程和计算机专业与软件工程专业,从短期和长远来看,哪个专业的前景和钱景更好?
  9. kali数据库渗透_Kali Linux渗透测试实战 1.4 小试牛刀
  10. 订单失效怎么做的_虾皮Shopee新加坡电商做什么产品好呢?订单少得可怜怎么办呢...
  11. ie java 注册表,win7在桌面显示IE图标的注册表
  12. mysql安装包如何使用_关于MySQL安装包如何使用的详细介绍
  13. [NOIP2017 普及组 T1] 成绩
  14. Mybatis拦截器
  15. 2008年IT日历 02
  16. uint16 java_java解析UINT16
  17. 3、T5L迪文屏资源介绍
  18. SRF04绿色小屏的作用
  19. Mybatis-Plus(连接Hive)
  20. 3dsmax展UV,制作UV贴图,将物体的贴图放到一张图片上,贴图优化方式,UVW贴图制作全流程

热门文章

  1. Saltstack的pillar组件(6)
  2. maven打包指定main函数
  3. 模态框里使IMG的Src能动态显示
  4. 分析 C# 2.0 新特性 -- 空类型(Nullable Types)
  5. Demosaic算法学习
  6. Yolov5目标检测模型运行遇到的相关问题汇总
  7. ios 上传图片到阿里云的oss_JEECG BOOT 上传如何同时支持阿里OSS、Minio、本地存储
  8. c++和java哪个难_2020 年 11 月编程语言排行榜,Python 超越 Java ?
  9. 第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器
  10. 复试计算机网络与软件工程,2018华南理工大学软件工程复试经验贴