Caddy 實戰(十)- 一分鐘搭建 PHP 服務器

Caddy 對於反向代理的支持我們已經介紹的差不多了,這也是我們對於 Nginx、Caddy 最多的應用之一,也就是把他們當成一個反向代理服務器使用。

除了我們經常見到的反向代理外,還有一類應用也可以通過反向代理來實現,它就是 FastCGI,比如我們經常看到的 php-fpm,它就是一個用於解釋 php 文件的 fastcgi。

對於 PHP 的支持,Caddy 的 reverse_proxy 完全可以支持,但是配置比較複雜,所以 Caddy 爲了支持 PHP,專門爲我們提供了 php_fastcgi 指令,用於配置 PHP 服務。

php_fastcgi 指令介紹

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…&gt; : 這個不用多做解釋了吧,就是後端的 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_timeout 、 read_timeout 、 write_timeout :沒啥特殊的,就是和 fastcgi 交互的時候,撥號、讀寫超時設置。

  8. 其他 reverse_proxy 的子指令都支持,可以根據需要使用,一般情況下,不會用到的。

如果你去讀 Caddy php_fastcgi 的源代碼,你會發現,php_fastcgi 指令其實就是針對 reverse_proxy 指令的一個包裝,更具體一些,是對 reverse_proxy 的子指令 transport 的定製,這種包裝,讓我們搭建一個 PHP 服務器會更簡潔方便。

實戰示例

假設你有一個已經安裝好的 pgp-fpm,在 9000 端口監聽;你有一個 WordPress 的博客,放在 /var/www 目錄下,那麼你可以這麼配置 Caddy,讓你可以快速搭建一個 WordPress 網站。

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 的方式,只需要改變第一行即可:

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

小結

隨着我們深入的學習 Caddy,相信你可以感受到它的魅力,它會更我們的配置操作更簡潔,方便,比如這篇文章幾行配置代碼就可以實現一個 PHP 服務器。

現在,如果你想搭建一個 WordPress 博客的話,不妨用 Caddy 試試。

本文爲原創文章,轉載註明出處, 歡迎掃碼關注公衆號flysnow_org或者網站 https://www.flysnow.org/ ,第一時間看後續精彩文章。覺得好的話,請猛擊文章右下角「在看」,感謝支持。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MjkmteqXzm4X_3pEoVjOQQ