美文网首页
Nginx 实现 FastCGI

Nginx 实现 FastCGI

作者: Alexander_Zz | 来源:发表于2019-03-19 20:56 被阅读0次

    实现模块

    • http_fastcgi_module
    • 配置指令
    fastcgi_pass ADDRESS;
    # 转发请求到后端服务器,ADDRESS 为后端的fastcgi server 的地址,可用位置:location, if in location
    
    fastcgi_index name; 
    # fastcgi 默认的主页资源,示例:fastcgi_index index.php;
    
    fastcgi_param parameter value [if_not_empty]; 
    #设置传递给 FastCGI 服务器的参数值,可以是文本,变量或组合
    
    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]; 
    定义fastcgi的缓存;
        path   # 缓存位置为磁盘上的文件系统路径    
        max_size=size   # 磁盘path路径中用于缓存数据的缓存空间上限    
        levels=levels   # 缓存目录的层级数量,以及每一级的目录数量,levels=ONE:TWO:THREE,示例:leves=1:2:2    
        keys_zone=name:size   # k/v映射的内存空间的名称及大小    
        inactive=time   # 非活动时长
    
    fastcgi_cache zone | off; 
    # 调用指定的缓存空间来缓存数据,可用位置:http, server, location1
    
    fastcgi_cache_key string; 
    # 定义用作缓存项的 key 的字符串,示例:fastcgi_cache_key $request_uri;
    
    fastcgi_cache_methods GET | HEAD | POST ...; 
    # 为哪些请求方法使用缓存
    
    fastcgi_cache_min_uses number; 
    # 缓存空间中的缓存项在 inactive 定义的非活动时间内至少要被访问到此 处所指定的次数方可被认作活动项
    
    fastcgi_keep_conn on | off;  
    #收到后端服务器响应后,fastcgi 服务器是否关闭连接,建议启用长连接
    
    fastcgi_cache_valid [code ...] time; 
    # 不同的响应码各自的缓存时长
    
    fastcgi_hide_header field; 
    # 隐藏响应头指定信息 
    fastcgi_pass_header field; 
    # 返回响应头指定信息,默认不会将 Status、X-Accel-...返回
    

    安装示例 (与 Nginx 同一台服务器)

    • yum 安装 php-fpm
    ~]# yum install -y php-fpm
    ~]# systemctl  start php-fpm && systemctl enable php-fpm
    
    • php 相关配置优化
    ~]# vim /etc/php-fpm.d/www.conf
    [www] 
    listen = 127.0.0.1:9000 
    listen.allowed_clients = 127.0.0.1 
    user = nginx   # php-fpm 启动的用户和组,会涉及到后期文件的权限问题 
    group = nginx 
    pm = dynamic   # 动态模式进程管理 
    pm.max_children = 500   # 静态方式下开启的php-fpm进程数量,在动态方式下他限定 php-fpm 的大进程数 
    pm.start_servers = 100   # 动态模式下初始进程数,必须大于等于 pm.min_spare_servers 和小于等于 pm.max_children 的值。 
    pm.min_spare_servers = 100   # 小空闲进程数 
    pm.max_spare_servers = 200   # 大空闲进程数 
    pm.max_requests = 500000   # 进程累计请求回收值 
    pm.status_path = /pm_status   # 状态访问 URL 
    ping.path = /ping   # ping 访问动地址 
    ping.response = ping-pong   # ping 返回值 
    slowlog = /var/log/php-fpm/www-slow.log   # 慢日志路径 
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log   # 错误日志 
    php_admin_flag[log_errors] = on 
    php_value[session.save_handler] = files   # phpsession保存方式及路径 
    php_value[session.save_path] = /var/lib/php/session   # 当时使用file保存session的文件路径
    

    修改配置文件后需要重启 php-fpm 生效

    • Nginx 端配置转发
    ~]# vim /apps/nginx/conf/conf.d/home.conf
    # 在指定文件配置 fastcgi
    location ~ \.php$ {
      root          /data/nginx/php;   # $document_root 调用 root 目录
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME  /data/nginx/php$fastcgi_script_name;
      fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    # 如果 SCRIPT_FILENAME 是绝对路径则可省略 root  /data/nginx/php;
      include       fastcgi_params;
    }
    
    • php 测试页面
    ~]# mkdir /data/nginx/php
    ~]# vim /data/nginx/php/index.php
    <?php
        phpinfo();
    ?>
    

    重启 Nginx 并访问 web 测试


    安装示例 (与 Nginx 不在同一个服务器)

    • yum 安装 php (同上)
    • 修改 php-fpm 监听配置
    ~]# vim /etc/php-fpm.d/www.conf
    listen = 192.168.10.104:9000
    # 指定监听 IP 地址,默认在 127.0.0.1 的 9000 端口,无法远程连接
    ;listen.allowed_clients = 127.0.0.1
    # 注释运行的客户端 (注释注释符为";")
    
    • Nginx 配置转发
    location ~ \.php$ {
      root          /data/php;
      fastcgi_pass  192.168.10.104:9000;
      fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME  /data/php$fastcgi_script_name;
      fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include       fastcgi_param;
    }
    

    重启 Nginx 并访问 web 测试

    相关文章

      网友评论

          本文标题:Nginx 实现 FastCGI

          本文链接:https://www.haomeiwen.com/subject/bwvmmqtx.html