Web 模板和 FastCGI/代理缓存
网页模板如何工作?
警告
修改模板可能会导致服务器出现错误,并可能导致某些服务无法重新加载或启动。
每次重建用户或域时,域的配置文件都会被新模板覆盖。
出现这种情况时:
- HestiaCP 已更新。
- 管理员启动它。
- 用户修改设置。
模板可以在/usr/local/hestia/data/templates/web/
中找到。
服务 | 路径 |
---|---|
Nginx (Proxy) | /usr/local/hestia/data/templates/web/nginx/ |
Nginx - PHP FPM | /usr/local/hestia/data/templates/web/nginx/php-fpm/ |
Apache2 (Legacy/modphp) | /usr/local/hestia/data/templates/web/apache2/ |
Apache2 - PHP FPM | /usr/local/hestia/data/templates/web/apache2/php-fpm/ |
PHP-FPM | /usr/local/hestia/data/templates/web/php-fpm/ |
警告
避免修改默认模板,因为它们会被更新覆盖。 为了防止这种情况,请使用以下命令分别创建备份并使用备份文件编辑新模板:
cp original.tpl new.tpl
cp original.stpl new.stpl
cp original.sh new.sh
编辑完模板后,从控制面板为所需的域启用它。
修改现有模板后,需要重建用户配置。 这可以使用 v-rebuild-user 命令或 Web 界面中的批量操作来完成。
可用变量
变量名 | 描述 | 示例 |
---|---|---|
%ip% | 服务器的IP地址 | 123.123.123.123 |
%proxy_port% | 代理的端口号 | 80 |
%proxy_port_ssl% | 代理的SSL端口号 | 443 |
%web_port% | Web服务器的端口号 | 8080 |
%web_ssl_port% | Web服务器的SSL端口号 | 8443 |
%domain% | 域名 | domain.tld |
%domain_idn% | 国际化域名(Internationalised Domain Name) | domain.tld (注意:这里可能与%domain% 相同) |
%alias_idn% | 别名国际化域名(Alias Internationalised Domain Name) | alias.domain.tld |
%docroot% | 域名的文档根目录 | /home/username/web/public_html/ |
%sdocroot% | 域名的私有根目录 | /home/username/web/public_shtml/ |
%ssl_pem% | SSL证书的存放位置 | /usr/local/hestia/data/user/username/ssl |
%ssl_key% | SSL密钥的存放位置 | /usr/local/hestia/data/user/username/ssl |
%web_system% | 作为Web服务器使用的软件 | Nginx |
%home% | 默认主目录 | /home (注意:这通常是主目录的根,而不是特定用户的目录) |
%user% | 当前用户的用户名 | username |
%backend_lsnr% | 默认的FPM服务器地址和端口 | proxy:fcgi://127.0.0.1:9000 (通常指向PHP-FPM或类似的进程管理器) |
%proxy_extentions% | 应由代理服务器处理的文件扩展名列表 | 一个文件扩展名列表(例如:.php .html .js ) |
温馨提示
%sdocroot%
也可以通过设置设置为 %docroot%
如何更改特定域的设置
切换到 PHP-FPM 目前有 2 种不同的方式:
- 使用主目录
/home/user/web/domain.tld/public_html
中的.user.ini
。 - 通过 PHP-FPM 池配置。
PHP 池的配置模板可以在 /usr/local/hestia/data/templates/web/php-fpm/
中找到。
警告
由于我们使用多 PHP,我们需要识别要使用的 PHP 版本。 因此,我们使用以下命名方案:YOURNAME-PHP-X_Y.tpl
,其中 X_Y
是您的 PHP 版本。
例如,PHP 8.1 模板将为YOURNAME-PHP-8_1.tpl
。
apt install php-package-name
例如,以下命令将安装php-memcached”和“php-redis
,包括 PHP 所需的附加包。
apt install php-memcached php-redis
Nginx FastCGI 缓存
温馨提示
FastCGI仅适用于Nginx + PHP-FPM服务器。 如果您使用 Nginx + Apache2 + PHP-FPM,则这不适用于您!
FastCGI 缓存是 Nginx 中的一个选项,允许缓存 FastCGI 的输出(在本例中为 PHP)。 它将临时创建一个包含输出内容的文件。 如果另一个用户请求同一页面,Nginx 将检查缓存文件的年龄是否仍然有效,如果有效,则将缓存文件发送给该用户,而不是向 FastCGI 请求。
FastCGI 缓存最适合收到大量请求且页面不经常更改的网站,例如新闻网站。 对于更多动态站点,可能需要更改配置,或者可能需要完全禁用它。
为什么软件包 x 和 y 不能与 FastCGI 缓存一起使用
由于我们有 20 多个不同的模板,并且我们不会全部使用它们,因此我们决定将来停止发布新模板,并希望社区通过提交 Pull 请求.
如果您想添加对某个模板的支持,请按照以下说明操作。
如何为我的自定义模板启用 FastCGI 缓存
找到调用“fastcgi_pass”的块:
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $uri =404;
fastcgi_pass %backend_lsnr%;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
在 include /etc/nginx/fastcgi_params;
下添加以下行:
include %home%/%user%/conf/web/%domain%/nginx.fastcgi_cache.conf*;
if ($request_uri ~* "/path/with/exceptions/regex/whatever") {
set $no_cache 1;
}
如何清除缓存?
启用 FastCGI 缓存后, 清除 Nginx 缓存 按钮将添加到 Web 域的 编辑 页面。 您还可以使用API或以下命令:
v-purge-nginx-cache user domain.tld
为什么我没有使用 FastCGI 缓存的选项
FastCGI 缓存仅适用于 Nginx 模式。 如果您使用的是Nginx + Apache2,则可以选择代理缓存模板并启用代理缓存。 它的功能几乎相同。 事实上,如果您使用 Docker 映像或 Node.js 应用程序,代理缓存也将起作用。
要编写自定义缓存模板,请使用以下命名方案:
caching-yourname.tpl
、caching-yourname.stpl
和 caching-yourname.sh
Hestia 是否支持 Web 套接字支持
是的,Hestia 可以很好地与 Web 套接字配合使用,但我们的默认模板默认包含以下内容:
proxy_hide_header Upgrade
这解决了 Safari 加载网站的问题。
要允许使用 Web 套接字,请删除此行。 否则 Web 套接字将无法工作