本篇文章给大家谈谈深入解析:Nginx与PHP的协同工作原理,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
php-fpm是什么
如果你不了解php-fpm,请看我的这篇文章- CGI、FastCGI、PHP-FPM之间的关系
要了解nginx 和php-fpm 是如何组合的,我们首先要了解它们是如何配置在一起的。主要配置文件有3个。
1、首先看虚拟主机服务器的配置:
服务器{
听80; #监听80端口并接收http请求
服务器名称www.example.com; #是网站地址
root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码项目的路径
#路由到网站根目录www.example.com时的处理
地点/{
索引index.php; #跳转到www.example.com/index.php
自动索引开启;
}
#请求网站下的php文件时,反向代理到php-fpm
位置~ .php$ {
包括fastcgi_params; #加载nginx fastcgi模块
fastcgi_pass 127.0.0.1:9000; #nginx Fastcgi进程监听IP地址和端口
}
}2.我们再看一下fastcgi.conf的配置。该配置主要用于将nginx中的变量解释为PHP可以理解的变量:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# 仅限PHP,如果PHP 是使用--enable-force-cgi-redirect 构建的,则需要
fastcgi_param REDIRECT_STATUS 200;最后我们看一下php-fpm.conf的配置,主要看监听服务器IP和端口。其他配置项可以参考我的文章php-fpm进程数优化方法
Listen=127.0.0.1:9000 通过解读这三个配置文件,我们可以看到nginx通过fastcgi_pass指令调用了php-fpm的监听端口。一个完整的流程如下图
www.example.com
nginx
服务器,位置被路由到
www.example.com/index.php
加载nginx的fast-cgi模块
fast-cgi监听127.0.0.1:9000地址
www.example.com/index.php
请求转发到127.0.0.1:9000
此时php-fpm正在监听
127.0.0.1:9000
php-fpm收到请求
启用工作进程来处理请求
php-fpm 已处理请求
结果返回给nginx
【深入解析:Nginx与PHP的协同工作原理】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
我一直以为 nginx 和 php 分别工作啊,没想到能协作!
有6位网友表示赞同!
这篇文章一定介绍了怎样配置 nginx 来处理 php 请求吧
有11位网友表示赞同!
终于可以好好了解下nginx和php的协作机制了!
有15位网友表示赞同!
我平时就使用 nginx 搭建网站,希望这篇文章能让我更深入了解它和 PHP 的结合。
有18位网友表示赞同!
学过一些基本 php 和 nginx 的知识,想看看这篇文章有没有更深入的内容。
有6位网友表示赞同!
感觉 nginx 作为前端代理服务器挺不错的,搭配 php 后端处理逻辑应该很强大。
有8位网友表示赞同!
我的项目一直用Apache+PHP,想知道nginx的结合效果怎么样吧。
有18位网友表示赞同!
这篇文章很有用啊,我最近在学习 web 开发方面的新知识。
有5位网友表示赞同!
看起来nginx和php的组合效率很高,适合大型网站使用吧?
有6位网友表示赞同!
希望能详细讲解如何配置 nginx 来支持 php 程序运行。
有14位网友表示赞同!
这篇文章应该会介绍一些常用的 php-fpm 配置技巧吧!
有11位网友表示赞同!
终于可以解决一下我关于 nginx 和 php 连接的问题了!”
有9位网友表示赞同!
期待能了解下 nginx 和 php 的优势互补之处!
有17位网友表示赞同!
看标题好像讲解了不少,很仔细介绍的话应该很有价值。
有12位网友表示赞同!
现在很多网站都用nginx 和 PHP 么?
有5位网友表示赞同!
希望能了解更多关于性能优化的技巧,让我的项目运行更快!
有12位网友表示赞同!
我比较好奇 nginx 和 php 的协作效率如何?
有14位网友表示赞同!
学习这方面的内容应该很能够帮助我提升开发技能。
有8位网友表示赞同!
希望这篇文章能深入浅出地介绍nginx和php的协作方式!
有7位网友表示赞同!
我会把这篇文章推荐给我的朋友,他也要学习 web 开发的知识!
有17位网友表示赞同!