简介
1 2 |
LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=PHP 不仅仅包含这些,还有redis/ELK/zabbix/git/jenkins/kafka |
LNMP工作方式
1 2 3 4 5 6 7 8 9 |
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。 1.静态请求:请求静态文件的请求 静态文件: 1)上传时什么样子,查看时就是什么样子 2)html的页面都是静态的 2.动态请求:请求动态内容,带参数的请求 1)服务器上并不是真实存在的,需要都数据库等服务上去获取数据,组成的页面 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下图所示 |

访问流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
1.浏览器输入域名,浏览器拿着域名去本地hosts文件解析,然后再去DNS服务器解析 2.本地hosts文件或者DNS服务器解析域名为IP 3.浏览器去请求该IP对应的web服务器 4.浏览器请求nginx 5.nginx判断请求是动态请求还是静态请求 #静态请求 location / { root /code; index index.html; } location ~* \.(jpg|png|mp4)$ { root /code/pic; } #动态请求 location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; ... ... } 6.如果是静态请求,nginx直接返回内容 7.如果是动态内容,nginx会通过fastcgi协议找php-fpm管理进程 8.php-fpm管理进程会去下发工作给wrapper工作进程 9.wrapper工作进程判断是不是php文件 10.如果只是php文件,可以直接解析然后返回结果 11.如果还需要读取数据库,wrapper进程会去读取数据库数据,然后返回数据 12.数据流转: 1)请求:浏览器-->负载均衡-->nginx-->php-fpm-->wrapper-->mysql 2)响应:mysql-->wrappe-->php-fpm-->nginx-->负载均衡-->浏览器 |