美文网首页
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