http.fastcgi
fastcgi代理对FastCGI服务器的请求。尽管这个指令最常见的用途是服务PHP站点,但默认情况下它是一个通用的FastCGI代理。这个指令可以在不同的请求路径下多次使用。
语法
fastcgi path endpoint [preset] {
root directory
ext extension
split splitval
index indexfile
env key value
except ignored_paths...
upstream endpoint
connect_timeout duration
read_timeout duration
send_timeout duration
}
- path 是转发请求之前要匹配的基本路径。
- endpoint 是FastCGI服务器的地址或Unix套接字。
- preset 是可选的预设名称(见下文)。使用预设值时,不需要重复预设值的个别设定。
- root 如果与虚拟主机的根目录不同,则指定FastCGI服务器使用的根目录。如果FastCGI服务器在另一个服务器上、根目录监狱(chroot-jailed)、和/或容器化的服务器上,那么它是有用的。
- ext 指定后缀,如果请求URL具有该后缀,则该扩展将代理请求到FastCGI。
- split 指定如何拆分URL;分割值成为第一部分的结尾,在它之后的任何URL中的内容成为PATH_INFO CGI变量的部分。
- index 指定如果URL没有指定文件时要尝试的默认文件。
- env 用给定的value设置一个名为key的环境变量;env属性可以多次使用,值可以使用请求占位符。
- except 是要从fastcgi处理中排除的以空格分隔的请求路径列表,即使它与基路径匹配。
- upstream 指定要使用的额外的后端。将执行基本负载平衡。可以多次指定。
- connect_timeout 允许连接到后端的时间。必须是持续时间值(如”10s”)。
- read_timeout 从后端读取响应的时间。必须是持续时间值。
- send_timeout 允许向后端发送请求的时间。必须是持续时间值。
对于HTTPS连接,为了兼容httpd的mod_ssl方式,这些环境变量将被设置:HTTPS
、SSL_PROTOCOL
和SSL_CIPHER
。
预设
预设是某种FastCGI配置的简写。这些预设是可用的:
- php 是这些配置的简写:
ext .php
split .php
index index.php
你不需要为预置指定单独的配置设置。但是,如果需要,可以通过手动声明来覆盖它的各个设置。
示例
代理所有到FASTCGI应答器的请求到127.0.0.1:9000:
fastcgi / 127.0.0.1:9000
将/blog中的所有请求转发到通过php-fpm服务的PHP站点(如WordPress):
fastcgi /blog/ 127.0.0.1:9000 php
使用自定义的FastCGI配置。
fastcgi / 127.0.0.1:9001 {
split .html
}
使用PHP的预设,但是覆盖ext属性:
fastcgi / 127.0.0.1:9001 php {
ext .html
}
使用PHP预设,但FastCGI服务器运行在一个基于官方Docker映像的容器中(容器端口9000发布到127.0.0.1:9001):
fastcgi / 127.0.0.1:9001 php {
root /var/www/html
}