Squid Web Cache Wiki

Squid Web Cache 文档

🔗 使用 eCAP 为 Squid 添加 GZip/DEFLATE 支持

作者:Yuri Voinov

🔗 目录

由于 Squid 不支持运行时使用 GZip/DEFLATE 进行内容压缩,我们将使用现有的 eCAP 支持以及此处重构和改进的适配器

:information_source: 注意:由于原作者已长期弃用适配器,请使用重构和改进后的版本。

🔗 用法

此配置对于减少内部流量和下游接口负载非常有用。

🔗 构建 eCAP 库

我们正在为 Squid 3.5.x/4.x.x 使用 v1.0.0 或 v1.0.1 下载链接。由于 API 更改,适配器不再兼容旧的 libecap。

根据您的 Squid 32 位或 64 位版本构建和安装库。

## 32-bit GCC
./configure 'CXXFLAGS=-O2 -m32 -pipe' 'CFLAGS=-O2 -m32 -pipe'

## 64-bit GCC
./configure 'CXXFLAGS=-O2 -m64 -pipe' 'CFLAGS=-O2 -m64 -pipe'

gmake
gmake install-strip

然后,使用 –enable-ecap 编译选项重新构建您的 Squid。为此,您可能需要在 configure 选项中添加 PKG_CONFIG_PATH。

./configure '--enable-ecap' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig'

PKG_CONFIG_PATH 指向 libecap 的 pkgconfig 文件。

🔗 构建 squid-ecap-gzip

./configure 'CXXFLAGS=-m32' 'LDFLAGS=-L/usr/local/lib'

or

./configure 'CXXFLAGS=-m64' 'LDFLAGS=-L/usr/local/lib'

make
make install-strip

:information_source: 注意:选择与您的 Squid 相同的 32 位或 64 位构建模式对 eCAP 库和 squid-gzip-ecap 至关重要。

:information_source: 注意:LDFLAGS 应指向 libecap 目录。

🔗 适配器配置

从 1.5.0 版本开始,适配器通过 squid.conf 中的 ecap_service 参数进行配置。

支持的配置参数

maxsize (default 16777216 bytes, i.e. 16 Mb) - maximum compressed file size
level (default is 6, valid range 0-9) - gzip/deflate global compression level
errlogname (default path/filename is /var/log/ecap_gzip_err.log)        - arbitrary error log name.
complogname (default path/filename is /var/log/ecap_gzip_comp.log)      - arbitrary compression log name.
errlog (default is 0, default path/filename is /var/log/ecap_gzip_err.log)      - error log
complog (default is 0, default path/filename is /var/log/ecap_gzip_comp.log)    - compression log

:information_source: 注意:errlogname/complogname 应指定完整的路径和文件名。目录应具有代理写入权限。如果文件存在,则会追加内容。如果文件不存在,将创建它。

适配器日志默认禁用。要启用错误日志,请指定 errlog=1。要启用压缩日志,请指定 complog=1。代理必须具有写入权限。

:information_source: 注意:当配置参数的规范有任何错误时,适配器将以默认值启动。如果存在错误日志,则会写入诊断消息。

🔗 Squid 配置文件

像这样粘贴配置文件

ecap_enable on
acl gzipmimes rep_mime_type -i "/usr/local/squid/etc/acl.gzipmimes"
loadable_modules /usr/local/lib/ecap_adapter_gzip.so
ecap_service gzip_service respmod_precache ecap://www.thecacheworks.com/ecap_gzip_deflate [maxsize=16777216] [level=6] [errlog=0] [complog=0] bypass=off
adaptation_access gzip_service allow gzipmimes

以及 acl.gzipmimes 的内容

# Note: single "/" produces error in simulators,
#       but works in squid's regex
^application/atom+xml
^application/dash+xml
^application/javascript
^application/json
^application/ld+json
^application/manifest+json
^application/opensearchdescription+xml
^application/rdf+xml
^application/rss+xml
^application/schema+json
^application/soap+xml
^application/vnd.apple.installer+xml
^application/vnd.apple.mpegurl
^application/vnd.geo+json
^application/vnd.google-earth.kml+xml
^application/vnd.mozilla.xul+xml
^application/x-apple-plist
^application/x-javascript
^application/x-mpegurl
^application/x-ns-proxy-autoconfig
^application/x-protobuffer
^application/x-web-app-manifest+json
^application/x-www-form-urlencoded
^application/xop+xml
^application/xhtml+xml
^application/xml
^application/x-yaml
^application/x-cdf
^application/txt
^application/x-sdch-dictionary
^application/x-steam-manifest
^audio/x-mpegurl
^image/svg+xml
^image/x-icon
^text/.*
^video/abst
^video/vnd.mpeg.dash.mpd

最后,重新启动您的 Squid,尽情享受吧。

🔗 注释

出于性能考虑,所有 mime 检查仅在代理级别,适配器外部执行一次。因此,在选择要传递到适配器的 mime 类型时要小心。

此外,HTTP/200 状态现在直接在适配器内部进行检查。因此,此规则

acl HTTP_STATUS_OK http_status 200
adaptation_access gzip_service allow HTTP_STATUS_OK

不再需要。

另外,请小心处理 text/plain mime 类型。出于某些原因,您可能需要将其从 acl 中移除,因为有时纯文本文件可能会异常大,并在解压缩过程中使 CPU 过载。在这种情况下,请指定符合您要求的“maxsize”。

:information_source: 注意:适配器需要 c++11 兼容的 C++ 编译器才能进行构建。


⚠️ Disclaimer: Any example presented here is provided "as-is" with no support
or guarantee of suitability. If you have any further questions about
these examples please email the squid-users mailing list.

类别: ConfigExample

导航:网站搜索网站页面类别🔼 向上