zoukankan      html  css  js  c++  java
  • 简单了解 LNMP 架构

    1.什么是LNMP?

    LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=PHP、(ES、redis、kafka、zookeeper....)
    

    2.LNMP工作方式

    首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。
    	静态请求:请求静态文件或者html页面,服务器上存在的html文件
    		静态文件:上传时什么样子,访问时还是什么样子;
    	动态请求:请求的是动态内容,带参数的请求
    			动态页面不存在于服务器上,他可能是取数据库或者redis等地方取值拼凑成的页面
    	
    当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理
    

    3.访问流程

    1.浏览器输入域名,浏览器会拿着域名取DNS服务器解析
    2.DNS服务器会将域名解析成IP 
    3.浏览器会去与IP对应服务器建立TCPIP连接 
    4.连接建立完成,会向服务器发起请求,请求nginx 
    5.nginx会判断请求是动态的还是静态的
    	#静态请求
    	location / {
    		root /code;
    		index index.html;
    	}
    	
    	#动态请求
    	location ~* .php$ {
    		fastcgi_pass 127.0.0.1:9000;
    	}
    6.如果是静态请求,nginx去code目录获取,直接返回
    7.如果是动态请求,nginx会通过fastcgi协议连接PHP服务的php-fpm管理进程
    

    8.php-fpm管理进程会下发工作给 wrapper工作进程 
    9.wrapper工作进程判断是不是简单的php内容 
    10.如果只是php内容则使用php解析器解析后直接返回
    11.如果还需要读取数据库,wrapper工作进程会去数据库读取数据,再返回数据
    12.数据流转过程: 
    	1)请求:浏览器 > 负载均衡 > nginx > php-fpm > wrapper > mysql 
    	2)响应:mysql > wrapper > php-fpm > nginx > 负载均衡 > 浏览器5.php-fpm管理进程
    
    #fastcgi 
    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=fastcgi_cache_zone:128m inactive=5m max_size=10g;  #缓存目录  目录层级   缓存区名称和大小   移除多长时间未访问的缓存数据   最大占用磁盘空间
    fastcgi_buffering on;                        #默认on,是否缓存fastcgi响应
    fastcgi_buffer_size 64k;                       #缓存区大小
    fastcgi_buffers 8 32k;                         #指定多少与多大缓存区来缓存fastcgi响应
    fastcgi_temp_path fastcgi_temp 1 2;              #默认目录fastcgi_temp
    fastcgi_max_temp_file_size 1024m;                  #默认1024m,单个临时文件最大大小
    fastcgi_temp_file_write_size 128k;                #一次性写入临时文件数据大小
    fastcgi_request_buffering on;                       #默认on,是否先缓存整个客户端请求正文,再发送给fastcgi服务器
    fastcgi_connect_timeout 60s;                      #默认60秒,与fastcgi服务器建立连接超时时间
    fastcgi_read_timeout 300s;                        #默认60秒,读取fastcgi服务器响应超时时间
    fastcgi_send_timeout 300s;                        #默认60秒,发送请求到fastcgi服务器超时时间
    
  • 相关阅读:
    北邮OJ103.反转单词 c++/java
    北邮oj 104. 912星球的研究生
    北邮oj 97. 二叉排序树
    北邮OJ 89. 统计时间间隔 java版
    用欧几里得定理求最大公约数和最小公倍数
    shell执行${var:m:n}报错Bad substitution解决办法
    基于ffmpeg不同编码方式转码后的psnr对比
    ffmpeg使用ss与t参数对视频进行剪辑
    黑菜菌的JAVA学习笔记
    Linux服务器内存监控—每小时检查&超出发送邮件&重启占用最高的Java程式
  • 原文地址:https://www.cnblogs.com/caodan01/p/14719099.html
Copyright © 2011-2022 走看看