跳转至

服务器模块

您可以使用 Rust 编写的模块来扩展 Ferron。

以下模块内置于 Ferron 中并默认启用:

  • cache - 此模块启用服务器响应缓存。
  • cgi - 此模块启用 CGI 程序的执行。
  • dcompress (Ferron 2.1.0 及更高版本) - 此模块为动态内容启用 HTTP 压缩。
  • fauth - 此模块启用转发到身份验证服务器的身份验证。
  • fcgi - 此模块启用连接到 FastCGI 服务器的支持。
  • fproxy - 此模块启用正向代理功能。
  • limit (Ferron 2.0.0 及更高版本) - 此模块启用速率限制。
  • replace (Ferron 2.0.0 及更高版本) - 此模块启用响应正文中字符串的替换。
  • rproxy - 此模块启用反向代理功能。
  • scgi - 此模块启用连接到 SCGI 服务器的支持。
  • static (Ferron 2.0.0 及更高版本) - 此模块启用静态文件服务。

Ferron 还支持可在编译时启用的其他模块。

Ferron 提供的其他模块来自以下存储库:

如果您想将 Ferron 与其他模块一起使用,可以查看编译说明

模块说明

cache 模块

cache 模块是 Ferron 的一个简单的内存缓存模块,可与“Cache-Control”和“Vary”标头一起使用。缓存在所有线程之间共享。

cgi 模块

要使用此模块运行 PHP 脚本,您可能需要调整 PHP 配置文件,该文件通常位于 /etc/php/<php version>/cgi/php.ini,方法是将 cgi.force_redirect 属性设置为 0。如果您不进行此更改,PHP-CGI 将显示一条警告,指示 PHP-CGI 二进制文件是使用启用的 force-cgi-redirect 编译的。建议对用户上传和下载使用 cgi-bin 之外的目录,以防止 cgi 模块错误地将带有 shebang 和 ELF 二进制文件的上传脚本视为 CGI 应用程序,这可能导致恶意软件感染、远程代码执行漏洞或 500 内部服务器错误等问题。

fauth 模块

此模块的灵感来自 Traefik 的 ForwardAuth 中间件。如果身份验证服务器以 2xx 状态代码回复,则允许访问,并执行初始请求。否则,将发回身份验证服务器的响应。

向身份验证服务器提供以下请求标头:

  • X-Forwarded-Method - 原始请求使用的 HTTP 方法
  • X-Forwarded-Proto - 如果原始请求已加密,则为 "https",否则为 "http"
  • X-Forwarded-Host - 原始请求中 Host 标头的值
  • X-Forwarded-Uri - 原始请求 URI
  • X-Forwarded-For - 客户端的 IP 地址

fcgi 模块

PHP-FPM 可能在与 Ferron 不同的用户下运行,因此您可能需要为 PHP-FPM 用户设置权限。

如果您仅将 PHP-FPM 用于 Ferron,则可以在 PHP-FPM 池配置文件(例如 /etc/php/8.2/fpm/pool.d/www.conf)中将 listen.ownerlisten.group 属性设置为 Ferron 用户。

fproxy 模块

如果您正在使用 fproxy 模块,则本地网络和本地主机上的主机也可以从代理访问。如果您不希望这些主机可以从代理访问,可以使用防火墙阻止它们。

limit 模块

此模块使用令牌桶算法。速率限制是基于每个 IP 地址的。

replace 模块

如果您将此模块与静态文件服务一起使用,建议使用 compressed #false 禁用静态文件压缩,否则替换将无法正常工作。

rproxy 模块

当指定 proxyTosecureProxyTo 配置属性时,将启用反向代理功能。

向后端服务器提供以下请求标头:

  • X-Forwarded-Proto - 如果原始请求已加密,则为 "https",否则为 "http"
  • X-Forwarded-Host - 原始请求中 Host 标头的值
  • X-Forwarded-For - 客户端的 IP 地址