我最近尝试用它http_substitution_filter_module
来过滤和替换我的 nginx 服务器中的一些内容。
添加subs_filter
规则后,我不能再使用Range
header 来检索文件的一部分,而是检索全部内容。
示例:
flag.txt
在/var/www/html
内容中:
The flag is FLAG{IAMFLAGYEEAH}.
我只能curl -r 13-16 <server-address>/flag.txt
用来获取文件的一部分。输出:
LAG{
但是如果我启用了sub_filter
规则,Range
标题就不再起作用了。通过使用相同的命令,我得到以下结果:
The flag is FLAG{NOFLAGFORYOU}.
尽管过滤器可以完美运行,但仍会返回完整内容。
这是我的nginx/sites-enabled/default
配置(其他设置与默认设置相同):
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
subs_filter_types text/plain;
subs_filter "FLAG{\w*}" "FLAG{NOFLAGFORYOU}" ir;
}
我的 nginx 版本是1.14.0
. 该模块是通过命令安装的apt install libnginx-mod-http-subs-filter
。
我应该如何保持Range
标题工作并同时过滤内容?