Caddy对于反向代理的支持我们已经介绍的差不多了,这也是我们对于Nginx、Caddy最多的应用之一,也就是把他们当成一个反向代理服务器使用。

除了我们经常见到的反向代理外,还有一类应用也可以通过反向代理来实现,它就是FastCGI,比如我们经常看到的php-fpm,它就是一个用于解释php文件的fastcgi。

对于PHP的支持,Caddy的reverse_proxy完全可以支持,但是配置比较复杂,所以Caddy为了支持PHP,专门为我们提供了php_fastcgi指令,用于配置PHP服务。

php_fastcgi 指令介绍

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
php_fastcgi [<matcher>] <php-fpm_gateways...> {
	root <path>
	split <substrings...>
	env [<key> <value>]
	index <filename>|off
	resolve_root_symlink
	dial_timeout  <duration>
	read_timeout  <duration>
	write_timeout <duration>

	<any other reverse_proxy subdirectives...>
}

以上就是php_fastcgi指令的表达式,相比reverse_proxy指令简单了很多。当然,php_fastcgi也支持reverse_proxy的所有子指令,这也间接证明了php_fastcgi的强大。 在大部分情况下,我们只需要配置php_fastcgi指令的配置就可以满足PHP服务的需要,只有特别的,需要单独定制的,才需要使用reverse_proxy的子指令。

好了,下面让我们看下php_fastcgi指令的每个配置都是什么意思,如何使用他们。

  1. php-fpm_gateways...> :这个不用多做解释了吧,就是后端的php-fpm服务网关,可以是socket的,也可以是http的。
  2. root :用于设置PHP站点的根目录。
  3. split :用于将URI拆分为两部分的字符串,主要用于拆分出真实的资源路径信息以及设置PATH_INFO变量,默认是 .php
  4. env :可以设置一些额外的环境变量。
  5. index :指定索引文件,比如 index.php 等,也可以使用 off 将其关闭。
  6. resolve_root_symlink :如果 root 指令配置的是一个符号链接,那么通过它,可以解析出 root 的真实路径。
  7. dial_timeoutread_timeoutwrite_timeout :没啥特殊的,就是和fastcgi交互的时候,拨号、读写超时设置。
  8. 其他reverse_proxy的子指令都支持,可以根据需要使用,一般情况下,不会用到的。

如果你去读Caddy php_fastcgi的源代码,你会发现,php_fastcgi指令其实就是针对reverse_proxy指令的一个包装,更具体一些,是对reverse_proxy的子指令transport的定制,这种包装,让我们搭建一个PHP服务其会更简洁方便。

实战示例

假设你有一个已经安装好的pgp-fpm,在9000端口监听;你有一个WordPress的博客,放在 /var/www 目录下,那么你可以这么配置Caddy,让你可以快速搭建一个WordPress网站。

1
2
3
4
5
6
7
8
9
https://example.com {
  root * /var/www
  php_fastcgi localhost:9000 {
     # some php_fastcgi-specific subdirectives
     split .php
     index index.php
  }
  file_server
}

就这么简单,是不是比Nginx还容易。这里的 file_server 是为了启用静态文件服务,不然无法加载js、css这些文件。 如果你使用php-fpm socket的方式,只需要改变第一行即可:

1
php_fastcgi unix//run/php/php7.4-fpm.sock

小结

随着我们深入的学习Caddy,相信你可以感受到它的魅力,它会更我们的配置操作更简洁,方便,比如这篇文章几行配置代码就可以实现一个PHP服务器。

现在,如果你想搭建一个WordPress博客的话,不妨用Caddy试试。

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站asf http://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「好看」,感谢支持。

扫码关注