nginx和php有什么关系?不少新手可能有这个疑问,我以前学php也没注意这些问题,只管着按文档配置操做,完成php项目就无论了,最近特地总结了一下。php
php是一门编程语言,讲究说学逗唱...呃,不对,是能够编写不少程序,可是只有php的话,你的php只能在你的服务器里孤立的运行,好比你用php写了一个能够经过身高计算人的标准体重的程序,虽然这个程序能够在服务器运行,可是他还不能和客户交互,由于客户如今还不能访问你的php程序,他也不会去下载你的php程序到本身电脑里运行,他只想默默的经过浏览器告诉你他的身高,而后获得这个程序返回的体重,那么谁来获得这个用户发送过来的请求呢,又怎么把请求数据转发给对应的php程序呢 ?python
nginx就是为了解决上述问题而出现的,nginx是一个已经写好的程序,须要安装配置,做用是专门接收处理客户经过浏览器等发送来的请求,并和你写的php程序交互,就这么简单,可是nginx不只能够和你写的php程序交互,也能够和你写的其余程序交互,好比C,python,由于不是全部人都用php来写web程序,简单点说nginx是一个能够监听处理http请求(浏览器请求)的程序,会装会配置,知道流程就能够用了,固然深刻了解下就更好了。nginx
这样的话,nginx就能够比喻处理成处理http请求业务的部门,是服务器和外部千千万万浏览器等客户端进行沟通的关口。php是服务器内部一个数据加工部门,能够加工生成各类页面。客户端发送的http请求历经层层路由到达你的服务器,而后被nginx逮个正着,统一听候nginx大人的调度,若是客户请求的是其余静态资源,好比txt文本,图片等,nginx直接找到该资源,并返回给客户端,若是客户请求的是php程序,就找到对应的php程序,而后把客户数据给这个程序,让这个php程序运行一遍,再把这个程序运行的结果返回给客户端。web
固然nginx和php具体交互并无那么简单,还须要保证规范和高效,在数据交换上,需遵照统一的规范,这个好理解,你们统一数据格式才不会乱套,效率才会更高。编程
为了更深刻的理解nginx,你也能够本身写一个web服务,好比用c或python写一个程序监听你服务器的80端口,80端口就是http请求的入口,而后还要考虑多线程等处理,由于客户的请求有时候会一块儿过来,也就是并发,不能写个服务只能处理一个请求,获得客户的请求后还要获得须要的参数进行分析,若是对方请求的是php程序,要考虑在系统里实时启动对应的php程序,把数据交给那个程序,而后老老实实的等这个程序运行结束,获得该程序产生的结果,而后把这个结果送还给客户端,这样就完成任务了。本身去想办法实现还能补充很多知识,好比socket编程,c,进程之间是怎么进行交互的等等,写完后还会去关注处理请求能力,内存使用状况,这样下来就会有一个比较完整的认识,最后反过来就会去想nginx是怎样处理高并发的呢?为何我写的遇到并发常常挂掉?我写的和php交互时为何这么慢?nginx里配置的php-fpm又是什么?有了这些疑问后,再进行下一步深刻探索,效率就会高不少了。浏览器