在 Wildfly 配置 GZip
Configuration GZip at Wildfly
我在我的 Wildfly 服务器中配置 GZip 时遇到问题,在服务器上使用了以下配置:
<subsystem xmlns="urn:jboss:domain:undertow:1.2">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js'] or path-suffix['.xhtml']"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="Wildfly 8"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/>
<gzip name="gzipFilter"/>
</filters>
</subsystem>
并正确成为请求的 Zip 文件,但是我想设置要压缩的文件的最小大小,我很难,任何人都知道如何设置服务器的最小大小做压缩在将它们发送给客户之前?
undertow中有谓词min-content-size
所以你可以使用 predicate=min-content-size[500]
由于缺少文档
,我在这里找到了可用的谓词https://github.com/undertow-io/undertow/tree/master/core/src/main/java/io/undertow/predicate
扩展亚历山大的回答我做了一些测试。奇怪的是,仅压缩大于 500 字节的文件的谓词是 not min-content-size[500]
.
要使用 jboss-cli.sh
运行 此脚本进行配置:
/subsystem=undertow/configuration=filter/gzip=gzipFilter:add()
/subsystem=undertow/server=default-server/host=default-host/\
filter-ref=gzipFilter:add(predicate="not min-content-size[500]")
请注意,gzip 过滤器将在服务器重新加载后开始工作。您可以使用 cli 的命令 :reload
.
来执行此操作
为了测试过滤器是否启用,我使用了:
wget $MY_URL -S --header="accept-encoding: gzip" \
-O /dev/null 2>&1| grep Content-Encoding
它与谓词一起工作:
predicate="exists['%{o,Content-Type}'] and regex[pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true]"
我在我的 Wildfly 服务器中配置 GZip 时遇到问题,在服务器上使用了以下配置:
<subsystem xmlns="urn:jboss:domain:undertow:1.2">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js'] or path-suffix['.xhtml']"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="Wildfly 8"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/>
<gzip name="gzipFilter"/>
</filters>
</subsystem>
并正确成为请求的 Zip 文件,但是我想设置要压缩的文件的最小大小,我很难,任何人都知道如何设置服务器的最小大小做压缩在将它们发送给客户之前?
undertow中有谓词min-content-size
所以你可以使用 predicate=min-content-size[500]
由于缺少文档
,我在这里找到了可用的谓词https://github.com/undertow-io/undertow/tree/master/core/src/main/java/io/undertow/predicate扩展亚历山大的回答我做了一些测试。奇怪的是,仅压缩大于 500 字节的文件的谓词是 not min-content-size[500]
.
要使用 jboss-cli.sh
运行 此脚本进行配置:
/subsystem=undertow/configuration=filter/gzip=gzipFilter:add()
/subsystem=undertow/server=default-server/host=default-host/\
filter-ref=gzipFilter:add(predicate="not min-content-size[500]")
请注意,gzip 过滤器将在服务器重新加载后开始工作。您可以使用 cli 的命令 :reload
.
为了测试过滤器是否启用,我使用了:
wget $MY_URL -S --header="accept-encoding: gzip" \
-O /dev/null 2>&1| grep Content-Encoding
它与谓词一起工作:
predicate="exists['%{o,Content-Type}'] and regex[pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true]"