Articles of http headers

自定义标题(mod_headers)不会与mod_rewrite结合显示

我有一个与多个域名链接到它的虚拟主机。 我正在尝试发送额外的标头,当一个特定的域名请求。 这就是我正在做的(在.htaccess的vhost中都尝试过,结果是一样的) SetEnvIf HOST thishost THETAG=noindex Header set X-Robots-Tag "%{THETAG}e" env=THETAG Header set X-Robots-Test "Yes" 所以基本上,X-Robots-Test标题应该始终存在。 如果设置了THETAG标题,则只有当主机标题包含“thishost”时才设置X-Robots-Tag。 RewriteRule看起来像这样,所以基本上301从页面1redirect到page2 RewriteRule page1 page2 [L,R=301] 当对page2发出请求时,头部显示正确,但是当对page1发出请求(并且由mod_rewriteredirect)时,头部不存在(甚至没有testing头部)。 当从PHP脚本而不是mod_rewrite启动redirect时,它会显示标题,所以我认为问题在于mod_rewrite在mod_headers上是优先的。 有没有什么办法解决这一问题?

在某些情况下,$ sent_http_variables在Nginx中消失

我遇到了Nginx的一个奇怪的问题。 这是一个重现错误的最小configuration: server { server_name mydomain.com; listen 111.111.111.111:80; root /some/path; set $some_var $sent_http_content_type; add_header "X-Debug" $sent_http_content_type; } 在这种情况下, X-Debug头文件在响应中从不显示。 但是,如果我评论这一行: set $some_var $sent_http_content_type; 一切正常。 这对我来说似乎很奇怪,因为这行不会重新分配$sent_http_content_type var,但只能读取。 它看起来像只属于$sent_http_variables。 我也尝试了"${sent_http_content_type}"而不是$sent_http_content_type ,结果相同。 more_set_headers指令不能解决这个问题。 为什么Nginx的行为如此呢? 这是一个错误? 编辑: 我提供的例子只是最简单的情况,其中$sent_http_ vars消失。 其实我想做这样的事情: if ($sent_http_access_control_allow_origin ~ "^(https?)://([^/]+)") { set $new_cors http://$1.$2.proxy.mydomain.com; } more_set_headers "Access-Control-Allow-Origin: $new_cors"; 我写了一个代理服务器,我需要replaceAccess-Control-Allow-Origin响应头,因为否则代理的网站不能按预期工作。 在上面的例子中, if条件(在server部分)永远不会成true ,即使有这样的头,它适合我的正则expression式。 这可以解决吗? 感谢你的帮助!

如何判断哪个Web节点正在提供内容?

我有一个负载均衡器,将stream量分配给5个Web节点中的1个。 是否有一种简单的方法可以告诉我正在谈论什么Web节点,当它服务于我的内容。 例如,我是否在Apache中实现了一个Header? 在每个页面上添加一个隐藏的HTML元素? 奖励要点:人们做什么来强制自己到一个特定的networking节点?

ngrep – 可能隐藏有效载荷?

我使用ngrep很多来检查HTTP标头,看看发生了什么事情。 我使用-q标志进行安静的输出,但是我真的不想看到有效载荷,只有标题。 有没有办法做到这一点? 我目前的命令是: ngrep 'Content-Length:' port 80 -t -W byline -q

如何检查Nginx规则中的响应头的存在?

在Nginx中为请求设置重写规则certificate是相当简单的。 对于回应 ,不是那么多(至less不是我)。 如果未设置响应的Content-Length标头,我想从响应中去除Content-Type标头。 我已经安装了NginxHttpHeadersMoreModule ,所以应该允许我删除头,但我似乎无法find一种方法来检查是否存在使用Nginxconfiguration中的规则的响应的Content-Length头。 任何build议如何做到这一点将不胜感激!

如何caching我的网站?

我有几个关于caching网站的问题,因为我之前没有尝试caching网站。 首先是如何caching一个网站,以便客户端浏览网站时加载速度更快。 例如,我有许多图像在我的CSS风格,我该如何caching? 从我之前读过的PHPcaching是通过<head>标签完成的,也可以在.htaccess完成caching(很高兴我正在使用htaccess ^ _ ^)。 我在我的标题中添加了这个标签 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta http-equiv="expires" content="-1"> <meta http-equiv="pragma" content="no-cache">//or content="cache"??? 这也是我的htaccess里面: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> […]

Http头304和caching?

我们公司使用这些设置(不要问我为什么) – 对于每个请求,他们都希望从服务器获得新的请求。 这是一个只使用IE的Intranet系统。 他们将其定义在: 我们在iis7也有Windows身份validationNTLM 。 我有2个问题,请。 问题#1) 当浏览器发出请求(css)时: (暂时留下401响应 – 这是ntlm的工作原理) 他正在请求if-modified-since标题。 他为什么要添加这个头文件? 我如何configuration它? 为什么他不使用IE中的设置,并尝试每次都下载 – 正如我在第一张图片中显示的那样? 问题2) ( ntlm谈判之后 )的回应是: Not-modified响应是304头。 我假设它是因为我们发送了带有if-modified-since标头的请求。 但有一个问题。 他实际上是告诉我从我的caching中下载。 但是我在IE设置中明确告诉他 – 不要从caching中加载。 我在这里错过了什么? 非常感谢。

使用haproxy和http-send-name-header主机进行负载平衡

我遇到了以下问题: tldr; 使用http-send-name-header Hostdynamic重写HTTP主机头时http-send-name-header Host haproxy似乎搞乱了HTTP响应头。 这样做使用nginx和proxy_set_header Host $upstream_addr;时可以正常工作proxy_set_header Host $upstream_addr; 我需要到达目标机器:1234是: Host: target-machine:1234而不是Host: balancer:1234 长版 我们有一个只能运行32位JVM的客户安装,因此我们在n个不同的端口上产生n个相同应用程序的实例: target-machine:8766 target-machine:8767 target-machine:8768 target-machine:8769 而且我们确实有一台平衡器在专用balancer机上运行。 客户端必须基于IP(我们使用的软件的遗留问题)进行平衡。 现在我们来到这个丑陋的部分:我们打算使用的应用程序依赖于HTTP Host头字段,因为有些操作会导致它发送一个内部请求。 在我们当前的设置中,这个内部请求发送到负载均衡器,然后负载均衡器将其发送到目标机器之一,但是必然发送到它发起的目标机器。 我之前使用nginx和上游模块 (但是我们不能再这样做了,因为这个软件的另一个必须是HTTP代理不应该被代理caching,因为它的上传进度表取决于这个( 叹息… ))并且可以解决这个问题join: proxy_set_header Host $upstream_addr; ,但nginx不支持上传stream媒体。 我发现http-send-name-header Host可能正是我所需要的(请参阅我的haproxy.cfg ),但会导致另一个问题,当我将该行更改为http-send-name-header $AnythingButHost 该指令将正确的服务器名称添加到头部,但似乎与代理请求混乱,因为jetty过早地closures了stream,并抛出org.mortbay.jetty.EofException以及。 我需要的是一个主机头像: Host: target-machine:8766 代替 Host: balancer:8181 对于浏览器来说,这个问题如下图所示(发送内容的大小从几乎完整到几KB不等)。 当我不更改主机头时它会立即起作用,但是如果我将主机头改为完全相同的值,但是使用nginx,它就可以工作。 这真的让我感到困惑。 如果我可以帮助你的任何更多的信息,让我知道。

发布请求不完整时,IIS7响应标头公开服务器信息

当发出无效的Post请求时,IIS在响应头中显示“Server:Microsoft-HTTPAPI / 2.0”。 例如内容长度不包含在标题中。 返回的响应也说HTTP / 1.1 411长度要求。 我发现最接近的情况是在iis.net的这个论坛post: http ://forums.iis.net/t/1178183.aspx/1但仍然没有任何运气。 我也试图实现: http : //blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header。 aspx ,它不会停止添加/重命名服务器标题 我的客户要求将所有“服务器”头部作为其安全要求的一部分去除。 (不要问我为什么,我只是要把它完成的schmuck) 有谁遇到过这个?

在favicon.ico请求上拒绝ACCEPT头为空的stream量

作为过滤潜在有害stream量的一部分,我目前拒绝了$ _SERVER [“HTTP_ACCEPT”]为空的stream量。 我从我的日志中注意到,有相当多的请求被拒收,因为accept header是空的,有些请求在请求favicon.ico时来自有效的IPstream量。 我目前阻止这些favicon.ico请求与“403禁止”(我知道我应该可能使用406不可接受)。 我的网站上有一个favicon.ico。 我知道favicon.ico“找不到”的错误是用户看不到的。 我阻止这些页面,还是会看到403 Forbidden页面? 我想自己testing这个,但我不知道如何生成一个空头标页的请求。 也许如果有人有办法做到这一点,这将有所帮助。 感谢您的input。