$http_HEADER
The value of the HTTP request header HEADER when converted to lowercase and with 'dashes' converted to 'underscores', e.g. $http_user_agent, $http_referer...;
地址:http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER
原文地址:http://blog.csdn.net/rubenyu/article/details/6721910
上周末收到安全组童鞋的邮件,说是输出的时候有安全缺陷. 表现是在IE8之下,如果内容中有脚本的话,就会被直接执行掉,那么如果有攻击代码,这就杯具了…. 之所以会在IE8之下出现这个问题,是因为IE8似乎支持个什么mhtml.可以直接解读一些base64之后的内容,同时还能解读邮件头,导致邮件头不能被显示.
查了下google的实现,是加入了如下的三个header:
X-Content-Type-Options nosniff;
X-XSS-Protection “1; mode=block”;
X-Frame-Options SAMEORIGIN;
于是我就想加到我们的webpy中去….刷新,没反应,再刷新,还是没反应….
没刷几下,hoho,下班喽…
早上来了之后,开始追flup的源码,发现flup中的response都是正常的.
对了,这里还有两个tips需要记下来备忘:
1. 在我们的包里面flup是个egg,想玩,肯定得将它解开,于是unzip一下egg,可以得到一个可以debug的文件夹.这时候最好删除egg,我没测试这时候到底是谁生效.
2. 我们的组合是webpy+flup,使用的是flup的WSGIServer,读了部分WSGIServer的源码之后,里面有debug开关.打开的方法是:
from flup.server import fcgi_base
fcgi_base.DEBUG = 9
然后,在那个打开的包里面就可以用 _debug([0-9], msg) 这样的格式输出了.
默认情况下,log放在/tmp/fcgi.log中. 我放的DEBUG是9,貌似是里面最大的数字了,当然,越大信息越详细啦.
言归正传,我追阿追阿追,就是查不到原因,问了master dy,大师让我干脆给nginx.conf加配置,于是出现了这段:
[python] view plaincopyprint?
location ~ /downloads/ {
add_header XContent-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
root blablabla;
internal;
}
这样是可以解决问题了.
但是为啥nginx就不肯输出呢?于是追阿追阿追 发现在nginx源码中有这么一个filter(src/http/ngx_http_header_filter_module.c):
存在一个:ngx_http_header_filter方法,里面是重新构造的header从441行开始,一点一点的加…. 到了576行,似乎是要加入用户自定义的header了.但是,通过debug,再次发现思路不对.
最终的解决方案还是add_header(感谢宋老师陪我查了一上午).
我猜这个杯具的原因应该是因为nginx想让输出更加标准和安全些,最安全的方法就是”白名单”…
分享到:
相关推荐
例如,在Nginx配置中,确保`proxy_set_header`指令正确无误,并且服务器配置没有阻止自定义Header的传递。 总之,理解PHP处理HTTP头的方式以及`$_SERVER`数组的工作原理,是解决PHP获取自定义Header问题的关键。在...
结合提供的文件名,我们可以推断,`2nginx response.png`可能展示了Nginx添加自定义响应头的结果,`1request header中添加apiversion.png`可能描绘了在请求头中添加`apiversion`字段的过程,而`Nginx居然还能实现...
FancyIndex是Nginx的一个模块,它可以为用户提供一个美观且可自定义的目录索引视图,替代默认的简单文本列表。让我们详细探讨如何在Windows上安装Nginx以及启用FancyIndex模块。 首先,你需要下载Nginx的Windows...
add_before_body /.nginx/header.html; add_after_body /.nginx/footer.html; autoindex_exact_size off; autoindex on;} #indexer将.nginx文件夹复制到您的/home/web目录中。 演示: : 前后附加图标欢迎您为问题...
开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。 location / { proxy_set_header X-Real-IP $...
`add_header` 是 Nginx 的 `headers` 模块中的一个关键指令,它允许我们在 HTTP 响应头中添加自定义字段。然而,这个指令在实际使用中存在一些需要注意的坑,本文将通过具体的示例代码进行详细的解释。 ### 基本...
添加一个自定义的header--x-mls-logid,用来追踪接口之间的调用流程。 测试环境 MacOSX 10.10.3 8GB i5 openresty 1.7.2.1 PHP 5.4.38 测试结果 使用wrk进行测试 未启用php 不加载扩展 加载扩展 启用php 不加载扩展 ...
Nginx的变量分为两类:自定义变量和内置预定义变量。 **自定义变量**: 自定义变量允许用户根据需求创建自己的变量,通过`set`指令在`server`, `http`, `location`等配置块中声明。例如: ```nginx set $my_...
本篇文章将详细介绍如何在Nginx中隐藏版本号并自定义Web服务器信息,以增强系统的安全性。 首先,我们需要获取Nginx的最新稳定版本。通过官方下载地址(例如:`http://nginx.org/download/nginx-1.14.1.tar.gz`)...
Nginx管理代理 小型RESTful Web服务器,用于动态管理多租户系统的Nginx配置。 它旨在在您信任的基础架构中运行(例如,绑定到127.0.0.1或Intranet),因此未实现任何安全性。 为了能够动态重新加载Nginx,应使用...
如果客户端发送的请求头超过了`large_client_header_buffers`配置项所设定的大小限制,Nginx会返回错误,拒绝处理该请求。 2. 请求头解析:Nginx遍历缓冲区中的数据,查找name-value对。每个请求头由一个名称和一个...
5. 具体的配置示例:文档提供了具体的nginx.conf配置示例,包括如何自定义日志格式、限制访问方法、限制IP访问等,这些都是加固Nginx服务器的重要措施。 总结来看,文档详细介绍了Nginx服务器安全加固的各项措施,...
bara概览bara架构很简单,一个Nginx服务器运行在host上,画图如下:其背后用到的主要原理就是Nginx的proxy_pass以及map功能,Nginx会根据浏览器设置的自定义header(v)的值,根据map的映射关系,找到合适的upstream...
1. 添加头部:除了Nginx原生支持的头部设置外,headers_more_nginx_module允许我们在响应中添加自定义的HTTP头部,例如X-Accel-Redirect、X-Frame-Options等,以实现更多安全和性能优化策略。 2. 修改头部:对于...
`proxy_set_header Connection "upgrade"`设置告诉Nginx保持连接打开。 3. **处理WebSocket标识符**:WebSocket连接中,每个连接都有一个唯一的`Sec-WebSocket-Key`和`Sec-WebSocket-Accept`头,Nginx会自动处理...
以上仅是Nginx配置的冰山一角,实际应用中还可以结合正则表达式、if条件语句、自定义模块等实现更多高级功能。理解并熟练掌握这些基本配置,能够帮助运维人员更好地管理和优化Nginx服务器,提升网站性能和稳定性。
7. **第8章 Nginx模块开发**:对于开发者来说,这部分提供了自定义Nginx模块的指南,以扩展其功能。 8. **第12章 Nginx的核心模块**:深入讲解Nginx的基本模块,如事件模型、网络处理等,是理解Nginx工作原理的基础...
- **access_log**: 记录访问日志,格式可自定义。 - **error_log**: 记录错误日志,级别包括debug、info、notice、warn、error。 - **location**: 配置URL匹配规则,如`location / { ... }`匹配所有请求。 - **proxy...
- `header_filter_by_lua`: 修改响应头。 - `body_filter_by_lua`: 操作响应体。 四、典型应用场景 4.1 API网关 利用lua-nginx-module可以实现动态路由、限流、鉴权等网关功能。 4.2 数据缓存 结合ngx_lua_shared...
如果请求的资源不存在,Nginx会返回自定义的404错误页面。 ### 六、反向代理 Nginx作为反向代理服务器,可以将客户端请求转发到其他服务器,例如: ```nginx http { upstream backend { server backend1....