首页 > 系统相关 >Nginx(二):实现fastcgi协议代理

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

时间:2023-05-05 22:31:57浏览次数:50  
标签:缓存 http cache 代理 Nginx php fastcgi pm


原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 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

php的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,cache,代理,Nginx,php,fastcgi,pm
From: https://blog.51cto.com/iwtxokhtd/6247973

相关文章

  • nginx 发布网站通过域名访问,后端接口反向代理
    1、申请域名证书,申请好之后,下载Nginx域名部署包(包里一般会含义*.key和*.pem文件)2、把 *.key和*.pem文件放置到 Nginx程序 conf文件夹下,与nginx.conf文件路径保存一致3、修改Nginx的配置文件 server{    listen   443ssl;    #你的域......
  • Linux下查找Nginx配置文件位置
    1、查看Nginx进程ps-aux|grepnginx圈出的就是Nginx的二进制文件2、测试Nginx配置文件/usr/sbin/nginx-t可以看到nginx配置文件位置3、nginx的使用(启动、重启、关闭)首先利用配置文件启动nginx。nginx-c/usr/local/nginx/conf/nginx.conf重启服务:servicenginx......
  • 爬虫使用http代理
    1、每个过程从接口中随机取出IP列表,重复使用。失败后,调用API获取。一般逻辑如下:(1)每个过程,从接口中随机取回部分ip,反复尝试ip目录以获取数据;(2)如果访问成功,继续抓住下一个。(3)如果失败,从界面取一批IP,继续尝试。方案缺点:每个IP都有截止日期。如果提取100个,使用第20个,剩下的大部分可能......
  • 杀不死的nginx
    [root@xxxfsfg_nginx]#cd..[root@xxxfvar]#cd..[root@xxxfac]#lssfg_nginxvar[root@xxxfac]#cdsfg_nginx/[root@xxxfsfg_nginx]#lltotal12drwxr-xr-x.2rootroot4096Jul232019confdrwxr-xr-x.2rootroot4096Jul232019htmldrwxr-xr-x.2rootroo......
  • 使用nginx配置https域名证书
    安装SSL模块要在nginx中配置https,就必须安装SSL模块,也就是:http_ssl_module。进入到nginx的解压目录新增SSL模块(原来的那些模块需要保留)./configure\--prefix=/usr/local/nginx\--pid-path=/var/run/nginx/nginx.pid\--lock-path=/var/lock/nginx.local\--e......
  • nginx的反向代理缓存
    #proxy_cache_path设置缓存保存的目录#keys_zone设置共享内存以及占用的空间大小#max_size设置缓存大小#inactive超过此时间,则缓存自动清理#use_temp_path关闭临时目录proxy_cache_path/usr/local/nginx/upstream_cachekeys_zone=myca......
  • nginx控制浏览器缓存
    创建一个html文件vimcache.html<html><body><h1>Hello,Nginx~!~</h1></body></html>配置conf文件,这里配置在imooc.conf,可以自定义location/static{alias/home/imooc;}检查语......
  • ASEMI代理ADM3251EARWZ-REEL原装ADI车规级ADM3251EARWZ-REEL
    编辑:llASEMI代理ADM3251EARWZ-REEL原装ADI车规级ADM3251EARWZ-REEL型号:ADM3251EARWZ-REEL品牌:ADI/亚德诺封装:SOIC-20-300mil批号:2023+引脚数量:20工作温度:-40°C~85°C安装类型:表面贴装型ADM3251EARWZ-REEL汽车芯片ADM3251EARWZ-REEL特性2.5kV完全隔离(电源和数据......
  • ASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7
    编辑:llASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7型号:ADM3202ARUZ-REEL7品牌:ADI/亚德诺封装:TSSOP-16批号:2023+安装类型:表面贴装型引脚数量:16工作温度:VIORM:3.3V电源类型:车规级芯片ADM3202ARUZ-REEL7特征460kbps数据速率规定电压为3.3V符合EIA-23......
  • nginx卸载重装无配置文件
    sudoapt-get--purgeremovenginxsudoapt-getautoremovedpkg--get-selections|grepnginx并找到和nginx有关系的软件文件接着删除这个文件,并重装sudoapt-get--purgeremovenginx-commonsudoapt-getinstallnginx然后就恢复原样了———————————————......