Nginx ngx_http_fastcgi_module模块详解(八)

2020-05-29 15:32:47 浏览数 (1)

ngx_http_fastcgi_module

模块功能

允许将请求传递给另一台服务器。 转发请求到FastCGI服务器,不支持php模块方式

代码语言:javascript复制
1、fastcgi_pass address; 
    address为后端的fastcgiserver的地址 
    可用位置:location, if in location

2、fastcgi_index name; 
    fastcgi默认的主页资源 
    可用位置:http, server, location

    示例:fastcgi_index index.php;

3、fastcgi_param parameter value [if_not_empty]; 
    设置传递给FastCGI服务器的参数值,可以是文本,变量或组合
    可用位置:http, server, location

    示例模板 实现LNP: 
        1)在后端服务器先配置fpm server和mariadb-server 
        2)在前端nginx服务上做以下配置: 
            location ~* .php$ { 
                fastcgi_pass #后端fpm服务器IP:9000; 
                fastcgi_index index.php; 
                fastcgi_param SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name; 
                include fastcgi_params; 
                ...
            }
        3)fastcgi服务器实现
            yum install php-fpm
            vim /etc/php-fpm.d/www.conf
            listen = 9000 改此行
            #listen.allowed_clients = 127.0.0.1 删除或注释此行
            systemctl restart php-fpm

    示例2:通过/pm_status和/ping来获取fpm server状态信息
        location ~* ^/(pm_status|ping)$ { 
            include fastcgi_params; 
            fastcgi_pass #后端fpm服务器IP:9000; 
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; 
        }
    参考:http://coolnull.com/3872.html #写的很详细

4、fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size[inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
    可用位置:http
    定义fastcgi的缓存;
        path   缓存位置为磁盘上的文件系统 
        max_size=size 
            磁盘path路径中用于缓存数据的缓存空间上限 
        levels=levels:缓存目录的层级数量,以及每一级的目录数量
            levels=ONE:TWO:THREE 
            示例:leves=1:2:2 
        keys_zone=name:size 
            k/v映射的内存空间的名称及大小 
        inactive=time 
            非活动时长

5、fastcgi_cache zone | off; 
    调用指定的缓存空间来缓存数据 
    可用位置:http, server, location

6、fastcgi_cache_key string; 
    定义用作缓存项的key的字符串 
    可用位置:http, server, location

    示例:fastcgi_cache_key $request_rui;

7、fastcgi_cache_methods GET | HEAD | POST ...; 
    可用位置:http, server, location
    为哪些请求方法使用缓存

8、fastcgi_cache_min_uses number; 
    缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到此处所指定的次数方可被认作活动项 
    可用位置:http, server, location

9、fastcgi_keep_conn on | off; 
    收到后端服务器响应后,fastcgi服务器是否关闭连接,建议启用长连接 
    可用位置:http, server, location

10、fastcgi_cache_valid [code ...] time; 
    不同的响应码各自的缓存时长 
    可用位置:http, server, location

    示例: 
        http { 
            fastcgi_cache_path /var/cache/nginx/fcgi_cache levels=1:2:1 keys_zone=fcgicache:20m inactive=120s; 
            ... 
            server { 
                location ~* .php$ { 
                ... 
                fastcgi_cachefcgicache; 
                fastcgi_cache_key $request_uri; 
                fastcgi_cache_valid 200 302 10m; 
                fastcgi_cache_valid 301 1h; 
                fastcgi_cache_valid any 1m; 
                ...
            }
        }

练习:


  • 定义四个虚拟主机,混合使用三种类型的虚拟主机
    • 仅开放给来自于本地网络中的主机访问

  • 实现lnmp,提供多个虚拟主机
  • http, 提供wordpress
  • https, 提供pma

ngx_http_proxy_module模块 详细说明请参考官网 地址链接

0 人点赞