1. 闲不住的人首页
  2. 网站服务

Nginx通过FastCGI模块将请求转发到PHP

Nginx 通过 ngx_http_fastcgi_module 模块,将收到 PHP 程序的请求转发到后端运行着 PHP 的服务器处理,这里 Nginx 可以和 php-fpm 服务运行在同一台服务器,也可以将 Nginx 和 php-fpm 分离在两台机器上。但是,Nginx 不支持 php 模块方式,只能是 php-fpm 模式。

1. fastcgi_pass指令

设置 FastCGI 服务器的地址,地址可以指定为域名或IP地址,以及端口。

配置格式:

Syntax: fastcgi_pass address;
Default: —
Context: location, if in location

address:是php-fpm服务监听的地址和端口。

address 还可以使用 Unix socket 方式连接 PHP-FPM

fastcgi_pass unix:/tmp/fastcgi.socket;

示例:转发请求至 localhost 的 9000 端口

fastcgi_pass localhost:9000;

2. fastcgi_index指令

指定fastcgi应用的主页名称;

配置格式:

Syntax: fastcgi_index name;
Default: —
Context: http, server, location

示例:

fastcgi_index    index.php;

3. fastcgi_param指令

设置传递给 php-fpm 服务器的参数及其值;

配置格式:

Syntax: fastcgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location

示例:

fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;

4. fastcgi_cache_path指令

设定 fastcgi_cache 的缓存目录;

配置格式:

Syntax: 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];
Default: —
Context: http
# path:文件系统路径,用于存储缓存的文件数据;
# levels=levels:设置目录层级,比如1:2会生成16*256个字目录;
# keys_zone=name:size:name表示定义一个缓存空间的名字;
# size表示使用多大的内存空间;
# inactive=time:表示非活动时长;
# max_size=size:定义此路径下的多大空间用于存储缓存数据;

注意:fastcgi_cache_path只能用于http上下文。

配置示例:

fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=cache_zone:10m;

5. fastcgi_cache指令

是否启用 cache,如果启用,数据缓存在哪个 cache 中;也就是指明用哪个缓存空间;由 fastcgi_cache_path 指令中 keys_zone 指明的 name 的名称;

配置格式:

Syntax: fastcgi_cache zone | off;
Default: fastcgi_cache off;
Context: http, server, location

示例:

fastcgi_cache cache_zone;

6. fastcgi_cache_key指令

定义 fastcgi_cache 的 key,示例中就以请求的 URI 作为缓存的 key,Nginx 会取这个 key 的 md5 作为缓存文件,如果设置了缓存哈希目录,Nginx 会从后往前取相应的位数做为目录

配置格式:

Syntax: fastcgi_cache_key string;
Default: —
Context: http, server, location

配置示例:

fastcgi_cache_key $request_uri;

7. fastcgi_cache_methods指令

缓存哪些类型的请求的相关数据;

配置格式:

Syntax: fastcgi_cache_methods GET | HEAD | POST ...;
Default: fastcgi_cache_methods GET HEAD;
Context: http, server, location

通常此参数可以不用指定;

8. fastcgi_cache_min_uses指令

在 inactive 定义的非活动时长内缓存最小使用次数;

配置格式:

Syntax: fastcgi_cache_min_uses number;
Default: fastcgi_cache_min_uses 1;
Context: http, server, location

9. fastcgi_cache_valid指令

对不同响应码设定其可缓存时长;不加此参数默认不缓存任何数据;

配置格式:

Syntax: fastcgi_cache_valid  time;
Default: —
Context: http, server, location

配置示例:响应码是200和302缓存10分钟,404缓存1分钟;

fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404      1m;

10. 完整配置示例

# 配置在http配置段里
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=cache_zone:10m;
# 配置在server配置段里
location ~ \.php$ {
    root           html;
    fastcgi_cache cache_zone;
    fastcgi_cache_key $request_uri;
    fastcgi_cache_valid 200 302 10m;
    fastcgi_cache_valid 404     1m;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
    include        fastcgi_params;
}

如果觉得文章不错,不妨给个『打赏』写作不易,各位的支持,能激发和鼓励我更大的写作热情。谢谢

原创文章,作者:恩志,如若转载,请注明出处:https://www.xbzdr.com/446.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:510749025@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code