当 LNMP 组合工做时,首先是用户经过浏览器输入域名请求 Nginx Web 服务,若是请求的是静态资源,则由 Nginx 解析返回给用户;若是是动态请求(如 PHP),那么 Nginx 就会把它经过 FastCGI 接口发送给 PHP 引擎服务(即 php-fpm)进行解析,若是这个动态请求要读取数据库数据,那么 PHP 就会继续向后请求 MySQL 数据库,以读取须要的数据,并最终经过 Nginx 服务把获取的数据返回给用户,这就是 LNMP 环境的基本请求流程。 FastCGI 介绍:CGI 通用网关接口,是 HTTP 服务器与其余机器上的程序服务通讯交流的一种工具,CGI 接口的性能较差,每次 HTTP 服务器遇到动态程序时都须要从新启动解析器来执行解析,以后结果才会被返回 HTTP 服务器,所以就有了 FastCGI ,FastCGI 是一个在 HTTP 服务器和动态脚本语言间通讯的接口,主要是把动态语言和 HTTP 服务器分离开来,使得 HTTP 服务器专注地处理静态请求,提升总体性能,在 Linux 下,FastCGI 接口即为 socket ,这个 socket 能够是文件 socket 也能够是 IP socketphp
worker_processes 1;html
events {python
worker_connections 1024;程序员
}数据库
http {后端
include mime.types;浏览器
default_type application/octet-stream;缓存
sendfile on;服务器
keepalive_timeout 65;app
fastcgi_connect_timeout 240; # Nginx服务器和后端FastCGI服务器链接的超时时间
fastcgi_send_timeout 240; # Nginx容许FastCGI服务器返回数据的超时时间,即在规定时间内后端服务器必须传完全部的数据,不然Nginx将断开这个链接
fastcgi_read_timeout 240; # Nginx从FastCGI服务器读取响应信息的超时时间,表示链接创建成功后,Nginx等待后端服务器的响应时间
fastcgi_buffer_size 64k; # Nginx FastCGI 的缓冲区大小,用来读取从FastCGI服务器端收到的第一部分响应信息的缓冲区大小
fastcgi_buffers 4 64k; # 设定用来读取从FastCGI服务器端收到的响应信息的缓冲区大小和缓冲区数量
fastcgi_busy_buffers_size 128k; # 用于设置系统很忙时可使用的 proxy_buffers 大小
fastcgi_temp_file_write_size 128k; # FastCGI 临时文件的大小
# fastcti_temp_path /data/ngx_fcgi_tmp; # FastCGI 临时文件的存放路径
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g; # 缓存目录
server {
listen 80;
server_name www.abc.com;
location / {
root html/www;
index index.html index.htm;
}
location ~ .*.(php|php5)?$ {
root html/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_cache ngx_fcgi_cache; # 缓存FastCGI生成的内容,好比PHP生成的动态内容
fastcgi_cache_valid 200 302 1h; # 指定http状态码的缓存时间,这里表示将200和302缓存1小时
fastcgi_cache_valid 301 1d; # 指定http状态码的缓存时间,这里表示将301缓存1天
fastcgi_cache_valid any 1m; # 指定http状态码的缓存时间,这里表示将其余状态码缓存1分钟
fastcgi_cache_min_uses 1; # 设置请求几回以后响应被缓存,1表示一次即被缓存
fastcgi_cache_use_stale error timeout invalid_header http_500; # 定义在哪些状况下使用过时缓存
fastcgi_cache_key http://$host$request_uri; # 定义 fastcgi_cache 的 key
}
}
}
做者简介:
陈志珂(头条号:强扭的瓜很差吃)公众号“铅笔学园”运维内容合做做者之一,目前就任于中国最大的安卓应用软件公司,任高级工程师,如今公司任php开发工程师,python开发工程师,高级运维工程师。
铅笔学园:IT资源分享|知识分享,作初级程序员的指明灯