Nginx(二):实现fastcgi协议代理

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://xuding.blog.51cto.com/4890434/1743713

一、LNMP架构搭建

 1.LNMP实现方案

     (1)LAMP架构支持三种httpd+php方案

             1) httpd服务中集成模块(libphp5.so)化方式

             2) CGI方式(一台hhtpd服务器响应http请求时调用新的进程处理php请求)

             3) fastcgi后端提供cgi server process方式(C/S架构的方式使得php服务分离出来成为独立服务,通过监听套接字和前端httpd扮演的代理客户端交互,通过php-XXX与后端的服务进行动态调用)

      (2)LNMP架构仅支持一种Nginx+php结合方式:

              Nginx:集成ngx_http_fastcgi_module模块实现代理请求功能,例如:

server{

...

location~* \.php$ {

}

}

  php-fpm:提供fastcgi模式,独立进程处理,有空闲等待进程方式处理前端 ngx_http_fastcgi_module发送的请求

         php-mysql:mysql-server, mariadb-server驱动和后面的server服务进行交互

       注意:

           Nginx不支持动态装载米快,所以要确保编译php工作为fpm机制时ngx_http_fastcgi_module编译到Nginx程序中,在./configure时候要加入--enable-fpm选项。

 

  2.php-fpm程序包

      php-fpm包提供fcgi模式的php程序端,其不能和php程序包同时安装。RPM形式安装完成后提供主配置文件/etc/php-fpm.conf,分段配置文件/etc/php-fpm.d/*

/etc/php-fpm.d/www.conf配置文件(根据实际情况配置)

;

表示注释该行信息

listen  = 127.0.0.1:9000

监听端口,0.0.0.0表示本机所有地址。

支持远程调用应该监听在本机的远程通信端口

;listen.backlog =  -1

后援等待队列的长度,-1表示无限制

 listen.allowed_clients = 127.0.0.1

授权允许可请求主机,基于IP的控制机制,注释表示允许所

;listen.owner =  nobody

监听服务进程的主机默认以什么用户身份运行,nobody表示普通用户

;listen.group =  nobody

监听服务进程的主机默认以什么用户组身份运行

;listen.mode =  0666

监听服务进程的主机默认以什么权限运行

user = apache

用户,RPM包制作者修改,编译安装非此结果

group = apache

用户组,RPM包制作者修改,编译安装非此结果

pm  = static|dynamic

进程控制器生成子进程方式

;pm.status_path =  /status

状态机制

;ping.path = /ping

ping机制,一般用于提供监控机制

php_admin_value[error_log]  =

连接池错误日志位置

php_admin_flag[log_errors]  = on

是否在错误日志中将于管理相关的标志打开

php_value[session.save_handler]  = files

phpsession记录存放形式:文件

php_value[session.save_path]  =

phpsession记录存放路径,集群是关键

    注意:  pm连接池模式有两种,pm = static|dynamic

    static:固定数量的子进程;pm.max_children;

    dynamic:子进程数据以动态模式管理;选择该项需呀启用以下配置

pm.start_servers=

开始启用进程数

pm.min_spare_servers=

最小空闲进程数

pm.max_spare_servers=

最大空闲进程数

;pm.max_requests =

每个子进程自多允许响应多少请求,超过就kill

 

 

二、Nginx:ngx_http_fastcgi_module模块配置

   1.fastcgi_passaddress;:指明反向代理的服务器

     addressfastcgi server监听的IP地址和端口

    示例:fastcgi_pass   127.0.0.1:9000;

   2.fastcgi_index;定义fastcgi应用的默认主页;

    示例:fastcgi_index  index.php;

   3.fastcgi_paramparameter value [if_not_empty];设定传递给后端fastcgi server参数及其值;

    示例:fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

                /index.php ---> /scripts/index.php

   4.fastcgi_cache_pathpath  [levels=levels][use_temp_path=on|off] keys_zone=name:size [inactive=time][max_size=size];

                定义缓存:缓存空间等;应用于http配置段

path

数据缓存在磁盘中位置

levels=#[:#[:#]]

定义的目录级别,levels=2:1表示两位十六进制字符命名目录,每个目录中还有目录

keys_zone=name:size

元数据缓存在内存中;name:  cache的标识符;size:元数据cache大小;

inactive=time

缓存的非活动时间

max_size

缓存空间上限

   5.fastcgi_cachezone | off;调用定义过的缓存;

zone即为通过fastcgi_cache_path定义缓存时其keys_zone参数中的name;

   6.fastcgi_cache_keystring;定义如何使用缓存键;

    示例:fastcgi_cache_key   $request_uri;

   7.fastcgi_cache_methods GET | HEAD | POST ...;

    为何请求方法对应的请求进行缓存,默认为GET和HEAD;

   8.fastcgi_cache_min_usesnumber;

    缓存项的最少使用次数;

   9.fastcgi_cache_use_staleerror | timeout | invalid_header | updating | http_500 | http_503 | http_403 |http_404 | off ...;

    是否可使用stale缓存项响应用户请求;

   10.fastcgi_cache_valid[code ...] time;

     对不同响应码的响应设定其可缓存时长;

示例:

fastcgi_cache_valid 200 302 10m;

fastcgi_cache_valid404     1m;                                        

   注意:

        1) 定义缓存在fastcgi_cache_pathfcgi的缓存定义在http{ } 配置段上下文

        2) 调用缓存(serverlocationif)时至少应该指定三个参数fastcgi_cachefastcgi_cache_keyfastcgi_cache_valid

本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1743713

猜你喜欢

转载自2277259257.iteye.com/blog/2317685