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 指令的每個配置都是什麼意思,如何使用他們。
-
php-fpm_gateways…>
: 這個不用多做解釋了吧,就是後端的 php-fpm 服務網關,可以是 socket 的,也可以是 http 的。 -
root
: 用於設置 PHP 站點的根目錄。 -
split
: 用於將 URI 拆分爲兩部分的字符串,主要用於拆分出真實的資源路徑信息以及設置 PATH_INFO 變量,默認是.php
。 -
env
: 可以設置一些額外的環境變量。 -
index
: 指定索引文件,比如index.php
等,也可以使用off
將其關閉。 -
resolve_root_symlink
: 如果root
指令配置的是一個符號鏈接,那麼通過它,可以解析出root
的真實路徑。 -
dial_timeout
、read_timeout
、write_timeout
:沒啥特殊的,就是和 fastcgi 交互的時候,撥號、讀寫超時設置。 -
其他 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