您的位置:首页 > 运维架构 > Nginx

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

2016-02-20 20:56 519 查看
一、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 = /pingping机制,一般用于提供监控机制
php_admin_value[error_log] =连接池错误日志位置
php_admin_flag[log_errors] = on是否在错误日志中将于管理相关的标志打开
php_value[session.save_handler] = filesphp的session记录存放形式:文件
php_value[session.save_path] =php的session记录存放路径,集群是关键
注意: 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;:指明反向代理的服务器 address是fastcgi 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_path;fcgi的缓存定义在http{ } 配置段上下文 2) 调用缓存(server、location、if)时至少应该指定三个参数fastcgi_cache、fastcgi_cache_key、fastcgi_cache_valid 本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1743713
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: