http - 使用 http_substitutions_filter 模块后,nginx 会忽略 `Range` http header
问题描述
我最近尝试用它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
标题工作并同时过滤内容?
解决方案
推荐阅读
- algorithm - 找到满足条件的集合的最小子集的算法
- git - 在命令行上触发 gitlab ci/cd 作业
- azure - Azure 通知中心引发套接字异常
- angular - API 调用执行两次
- arrays - 如何使用来自另一个文件的数据绘制图表
- node.js - 如何在子文件夹上运行本地节点服务器?
- reactjs - React 的承诺:如何将数组转换为 json
- python - Matplotlib:在 3D 表面上绘制 3D 曲线
- laravel - 如何发送多封电子邮件以获取视图中的用户数据 - Laravel
- .net - 在 .NET 应用程序和 UWP 应用程序之间传递消息