php-fpm

CGI FastCGI Nginx

守給你的承諾、 提交于 2020-03-12 13:40:28
CGI 什么是CGI CGI全称通用网关接口,是一种让客户端(web浏览器)与web服务器(nginx等)程序进行通信(数据传输)的协议 用来规范web服务器传输到php解释权中的数据类型以及数据格式,包括URL、查询字符串、post数据、http header等,也就是为了保证webserver传递过来的数据是标准格式的 CGI可以用任何一种具有标准输入、输出和环境变量的语言编写,如php、perl、tcl等。不同类型语言写的程序只要符合cgi标准,就能作为一个cgi程序与web服务器交互,早期的cgi大多都是c或c++编写的 一般说的cgi指的是用各种语言编写的能实现该功能的程序 CGI程序的工作原理 每次webserver收到index.php这种类型的动态请求后,会启动对应的CGI程序(php的 解析器) php解析器会解析php.ini配置文件,初始化运行环境,然后处理请求,处理完成后将数据按照cgi规定的格式返回给webserver然后退出进行进程 最后webserver再把结果返回给浏览器 CGI程序的特点 高并发时性能较差 cgi程序的每一次web请求都会有启动和退出过程,也就是最为人诟病的fork-and-execute模式(每次HTTP服务器遇到动态请求时都需要重新启动脚本解析器来解析php.ini,重新载入全部dll扩展并初始化全部数据结构

PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

一世执手 提交于 2020-03-09 11:45:59
在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。 在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。 参考链接: https://bugs.php.net/bug.php?id=78599 https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/ https://github.com/neex/phuip-fpizdam 漏洞复现: 使用phuip-fpizdam-linux,发送数据包: 可见,这里已经执行成功。 注意,因为php-fpm会启动多个子进程,在访问 /index.php?a=id 时需要多访问几次,以访问到被污染的进程。 来源: https://www.cnblogs.com/yyxianren/p/12447453.html

CGI,FASTCGI,PHP-CGI,PHP-FPM

筅森魡賤 提交于 2020-03-08 05:35:22
看看一次请求到Webserver发生了什么 一个静态请求,webserver会找一下本地有没有存这个file,有就直接返回给client 一个动态请求,不同于寻常的.js .css,需要一个可以读懂这个请求的解释器来帮助我们一下 CGI(Common Gateway InterFace) 既然webserver想把这个请求交给可以处理的人来做,是不是该告诉人家一些基本的,并且人家看得懂的信息信息? Webserver会传那些基本信息给后端处理请求的解析器呢?url,get请求的query_string,POST数据,Http Header等,那么CGI就规定了要传哪些参数,以及以一个什么样的格式传过去,后端处理完这个请求,又该以什么样的格式传回。 概念:CGI(Common Gateway Interface)全称是“通用网关接口”,WEB 服务器与PHP应用进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。也就是说,CGI用来在web服务器与后端实现了CGI协议的程序之间提供一个沟通的桥梁,降低两者之间的耦合性。 缺陷:采用了效率低下的"FE"模式,就是Fork-And-Execute,每个web请求进来之后,都会启动一个php程序,处理完请求后退出,浪费资源,高请求数下,服务器宕机。 FastCGI

php-fpm搭建及加固

狂风中的少年 提交于 2020-03-07 17:16:30
php-fpm安装 nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。 nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。 那什么又是cgi呢? CGI(Common Gateway Interface)。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 简单的说,就是:cgi就是专门用来和web 服务器打交道的。web服务器收到用户请求,就会把请求提交给cgi程序(php的fastcgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句返回给web服服务器,再返回给客户端,这就是普通cgi的工作原理。 安装 yum安装 yum install php php-mysql php-fpm 安装成功。 php-fpm配置文件路径:/etc/php-fpm.d/www.conf php配置文件路径:/etc/php.ini 说明: php-mysql,这个是后续链接mysql需要的 修改php配置 php

memcache缓存服务器(安装-配置-测试篇)

旧巷老猫 提交于 2020-03-07 03:36:46
部署环境: 主机 ip地址 操作系统 nginx 172.16.1.100 CentOS 7.3 php+memcache 172.16.1.110 CentOS 7.3 Mysql 172.16.1.120 CentOS 7.3 memcached 172.16.1.130 CentOS 7.3 一, 环境准备: 搭建LNMP环境(动态解析) 1,安装nginx 1)安装依赖工具包: [root@nginx-server ~]# yum -y install gcc* pcre-devel openssl-devel zlib-devel make vim 2)创建nginx用户组和用户: [root@nginx-server ~]# groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx 3)解压源码包,配置&&编译安装: [root@nginx-server ~]# tar zxf nginx-1.8.0.tar.gz [root@nginx-server ~]# cd nginx-1.8.0 [root@nginx-server nginx-1.8.0]# ./configure --help ##可以查看自己需要的模块 --with,或取消的模块–without #根据自己的需求添加不同的模块

部署zabbix监控服务器

…衆ロ難τιáo~ 提交于 2020-03-07 01:47:56
一、zabbix运行架构 Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康性、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活的告警策略,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的web界面进行配置和操作,基于web的前端页面还提供了出色的报告和数据可视化功能。这些功能和特性使我们运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台。 Zabbix的运行架构如下: 从上面的运行架构图可以看到,Zabbix主要有几个组件构成,分别如下: 1、Zabbix Server Zabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。 2、Zabbix Database Storage 主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。可以使用MySQL、oracle、SQLite等。 3、Zabbix Web界面 这是Zabbix提供的GUI接口,通常(但不一定)与Zabbix Server运行在同一台物理机器上。 4、Zabbix Proxy 代理服务器 这是一个可选组件,常用于分布式监控环境中

php-fpm进程数管理

孤人 提交于 2020-03-05 18:51:21
先来了解一些名词概念: CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。它负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,由Web服务器收集程序的输出并加上合适的头部,再发送回客户端。 FastCGI是基于CGI的增强版本的协议,不同于创建新的进程来服务请求,使用持续的进程和创建的子进程来处理一连串的进程,这些进程由FastCGI服务器管理,开销更小,效率更高。 PHP-FPM是PHP实现的FastCGI Process Manager(FastCGI进程管理器), 用于替换PHP FastCGI的大部分附加功能,适用于高负载网站。支持的功能如: 平滑停止/启动的高级进程管理功能 慢日志记录脚本 动态/静态子进程产生 基于php.ini的配置文件 PHP-FPM在5.4之后已经整合进入PHP源代码中,提供更好的PHP进程管理方式,可以有效控制内存和进程,平滑重载PHP配置。如果需要使用,在./configure的时候带上-enable-fpm参数即可,使用PHP-FPM来控制FastCGI进程: // 支持start/stop/quit/restart/reload/logrotate参数 // quit/reload是平滑终止和平滑重新加载,即等现有的服务完成 ./php-fpm --start

nginx与php-fpm通信的两种方式

故事扮演 提交于 2020-03-05 17:41:44
简述 在linux中,nginx服务器和php-fpm可以通过tcp socket和unix socket两种方式实现。 unix socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再nginx配置文件中填写php-fpm的pid文件位置,效率要比tcp socket高。 tcp socket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式。 windows系统只能使用tcp socket的通信方式 配置方法 tcp socket:tcp socket通信方式,需要在nginx配置文件中填写php-fpm运行的ip地址和端口号。 location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } unix socket:unix socket通信方式,需要在nginx配置文件中填写php-fpm运行的pid文件地址。 //service php-fpm start生成.sock文件 location ~ \.php$ { include

Linux的学习--配置LNMP环境

允我心安 提交于 2020-03-05 05:41:43
最近,回到公司,发现电脑都换成linux系统了。。。很无力。。。 配置环境,跑起项目来就花了一天。。。额。。。在这里记录一下~~ 系统是ubuntu 12.04。 一、安装nginx 1:ubuntu因为安全策略,一般是禁用了root用户,所以每次执行命令时一般需要加上sudo去操作。为了方面后面其他步骤操作,可首先切换到root用户,这样后面不需要每次都加sudo了。 sudo su – (切换用户) 2:默认ubuntu默认是官方的源,国内用户访问可能会比较慢,所以将官方的源修改为163的源,修改方法此处不做介绍,可查ubuntu官方的wiki帮助手册。 访问地址:http://wiki.ubuntu.org.cn/Qref/Source 3:源修改完毕后记得要刷新列表: apt-get update 下面就开始安装nginx了 安装nginx的方式有多种,可以通过官方下载nginx源码包编译安装,也可以通过ubuntu软件包的形式安装,个人觉得都可以。大致考虑如下几点因素: 1)如果本身系统就是通过源码编译安装的,那么系统的性能将是比较高的,那么这种情况,通过源码来安装软件,性能是比较好的。而如果系统采用的是ubuntu等发行版安装的,那么软件通过源码编译并不能带来非常明显的性能提升。当然如果你想锻炼一下,或者自我满足一下,也可以试试通过源码安装。 2

PHP基础 CGI,FastCGI,PHP-CGI与PHP-FPM

妖精的绣舞 提交于 2020-03-04 07:21:01
CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。 FastCGI FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 FastCGI特点 FastCGI具有语言无关性. FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器。