Articles of http headers

Nginx / Apache:只有当X-Forwarded-Proto是https时才设置HSTS

我得到了以下设置: Internet => nginx[public:80 +443, SSL termination) => Varnish[localhost:81] => Apache[localhost:82] 现在有些网站只能通过HTTPS和有效的SSL证书进行访问。 对于这几个例外,我想激活HSTS,无论是nginx(首选,或在Apache)。 问题: 在nginx上, if Host = foo.tld则需要一些逻辑,然后设置Strict-Transport-Security xxx ,但根据http://wiki.nginx.org/IfIsEvil, if在某个location 在Apache上,我需要类似于if X-Forwarded-Proto 443 set Strict-Transport-Security xxx ,但我似乎不能用SetEnvIf (Apache 2.2) 我的逻辑是否有缺陷? 另一种方法的想法? 这是当前活动的configuration: nginx的 服务器{ server_tokensclosures; 听xx.xx.xxx.xxx:80; server_name localhost; 位置 / { proxy_pass http://127.0.0.1:81; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto […]

内容安全策略是否与Joomla的pipe理页面不兼容?

我想为在Apache 2.4上运行的Joomla网站设置一个内容安全策略头。 在h5bp中使用这个configuration并设置Header set Content-Security-Policy "script-src 'self'; object-src 'self'" src'self Header set Content-Security-Policy "script-src 'self'; object-src 'self'" src'self Header set Content-Security-Policy "script-src 'self'; object-src 'self'"为我提供了一个空白页面,用于loginwww.example.com/administrator/的Joomlalogin页面。 我怎样才能使用这个政策,并仍然login? 检查控制台,错误消息是: 内容安全策略:该页面的设置阻止了自我加载资源(“script-src http://www.example.com ”)。 pipe理员页面完全由example.com提供,没有第三方内容。 除了策略设置的login页面上的空白页面之外,该网站完美地工作。 检查/pipe理员页面的源代码,它看起来是完全普通的,除了JS没有运行。 完整页面源的副本在这里 。 因为我将example.com列入了“script-src'self'; object-src'self'”我希望这个页面可以呈现,但我明显错过了一些东西。 我现在重新testing了一个新的VPS和没有定制的Joomla干净安装。 设置内容安全策略并重新启动Apache会立即重现问题 – 浏览器中出现伴随控制台错误的完全空白pipe理页面,抱怨阻止资源加载的策略。 改变"script-src 'self' src'self "script-src 'IP:AD:DR:ESS' src'example.com "script-src 'example.com'或"script-src 'IP:AD:DR:ESS' src'IP "script-src 'IP:AD:DR:ESS'不会帮助,所有的脚本都会被封锁。 任何想法如何得到这个工作或进一步排除故障?

如何根据请求URI在HAproxy 1.6中添加响应头?

我使用HAproxy 1.6作为tomcat服务器之前的负载平衡器。 我需要添加基于请求URI的响应头。 例如,当请求uri是/api时,我想添加响应头部Cache-Control public,max-age="600" ,而当请求uri是别的东西时,则不会。 我第一次尝试使用基于path的ACL来添加标头到http-response: acl api path_reg ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if api 当我用-d启动haproxy时,我警告说path_reg (或path )与http-response不兼容: Dec 6 15:22:29 ip-10-30-0-196 haproxy-systemd-wrapper[315]: [WARNING] 340/152229 (2035) : parsing [/etc/haproxy/haproxy.cfg:78] : acl 'api' will never match because it only involves keywords that are incompatible with 'backend http-response header rule' 我试图在http-request添加标题而不是http-response : acl api path_reg […]

有没有一个表示旧IP的响应头?

我有一个网站,最近已经迁移到一个新的服务器。 旧的服务器在nginxconfiguration中有一个proxy_pass,以确保由于旧的DNS而导致到那里的任何请求被路由到新的服务器。 现在已经过去了几天,我仍然看到一些访问日志中的旧服务器stream量。 是否有一个特定的头部可以添加到旧服务器提供的响应中,以指示该主机的IP应该刷新? 也许一个caching控制:无caching或过期? 或者,也许是一个标题,指出新的IP?

如何过滤基于XID的清漆日志?

我遇到了难以find的罕见503错误。 Varnishlog让我很生气,因为我似乎无法得到我想要的信息。 我希望看到Varnish看到的客户端和后端通信。 我以为在Varnish的默认错误页面上login的XID号码将允许我从日志缓冲区中过滤确切的请求。 但是,没有varnishlog参数的组合给了我需要的输出。 以下仅显示客户端通信: varnishlog -d -c -m ReqStart:1427305652 而这只显示了由此产生的后端通讯: varnishlog -d -b -m TxHeader:1427305652 是否有单行显示整个请求?

为什么SPDY在Nginx 1.4.3中打破“Vary:Accept-Encoding”?

我使用SPDY模块编译了源代码Nginx 1.4.3。 但是,当启用SPDY时,似乎打破了我的'变化:接受编码'标题。 我的Nginxconfiguration: ./configure –conf-path=/etc/nginx/nginx.conf –pid-path=/var/run/nginx.pid –error-log-path=/var/log/nginx/error.log –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –http-log-path=/var/log/nginx/access.log –with-http_ssl_module –prefix=/usr –add-module=./nginx-sticky-module-1.1 –add-module=./headers-more-nginx-module-0.23 –with-http_spdy_module 我的`nginx.conf'文件: user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log […]

是否有链接x转发标头的标准?

IETF RFC 2616第4.2节允许一个请求包含具有相同字段名的多个头,只要插入的时间顺序被保留,并且它们的值可以用逗号分隔的值列表转换成单头。 http://tools.ietf.org/html/rfc2616#section-4.2 当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不用改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。 F5不会覆盖任何现有的X-Forwarded-For。 也不会将现有的X-Forwarded-For连接成一个逗号分隔的值。 相反,它将在集合的尾部插入额外的X-Forwarded-For。 但是有多个客户端,代理服务器,CDNs,stream量pipe理器,服务器的操作X-Forwarded-For集合的环境呢? 执行统一的做法似乎是有利的。 但是,最佳做法是什么? F5 BIG-IP默认的httpconfiguration文件插入标头在请求预先存在的XFF标头集合的末尾累积了一个额外的X-Forwarded-For ,以保持顺序。 AWS ELB鼓励将传入请求的多个X-Forwarded-For整合到包含逗号分隔的XFF IP列表的单个标头中,并加上用户主机地址,以保持顺序。 其他设备可以采用其他的变化。 是否存在针对异构环境的商定build议或事实标准? 此外,提供的任何时间戳数据将允许代码按照添加的时间顺序将X-Forwarded-For标题按照先前的XFF标题的操作可疑的情况明确地sorting。

如何在Tomcat中禁用ETag头文件

Tomcat似乎默认发送每个响应的ETag头。 我想停用这些在这里列出的原因。 我知道我可以在我的Apacheconfiguration中删除它们,但是有没有办法在Tomcat端禁用它们?

nginx正在削减dynamic页面的结束并caching它们

我把我的一个旧站点从Apache移到了一个nginx服务器上。 一切工作正常,但该网站有一些长的内容(一个+ 100K生成的HTML文件)。 我的第一个试验是禁用分块传输编码,但没有帮助。 这里是我的nginxconfiguration: $ cat /etc/nginx/nginx.conf user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; sendfile on; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_static on; gzip_http_version 1.0; gzip_disable "MSIE [1-6]\."; gzip_vary on; gzip_comp_level 1; gzip_proxied any; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript […]

HTTP / 1.1状态码400和417,不能select哪个

我已经在这里提到它可能有更好的帮助,我有一个处理用户发送数据的处理文件,然而,在这之前,它将来自客户端的input与期望值进行比较以确保没有客户端数据更改。 我可以说我对HTTP状态代码并不了解,但是我已经做了一些研究,并select哪一个最适合意外的input处理。 所以我想出了: 400 Bad Request: The request cannot be fulfilled due to bad syntax 417 Expectation Failed: The server cannot meet the requirements of the Expect request-header field 现在,我不能确定使用哪一个,我已经看到400错误请求被使用了很多,但是,我从解释得到的是,错误是由于一个未提交的请求,而不是一个非法的input。 另一方面,期望失败似乎只适合我的使用,但是,我从来没有见过或试验过这个头状态。 我需要你的经验和意见,非常感谢! 有关表单/stream程页面草稿的全面详细信息以及我的实验,请点击此链接。 另外:另一个原因 – 为什么我想这是为了防止谷歌操纵。 这不仅可以在后台使用,而且还可以在客户端/用户交互显示的前端和要显示的页面内容中使用。 我相信*,给予200 OK或403禁止状态码对于存在或允许存在的页面有效。 *另外两个:我已经看了417和100现在,发现他们类似于我试图做的(仅适用于上传处理的情况下,至less),在这里: http : //benramsey.com/blog/ 2008/04 / HTTP状态-100-继续/ 即: *连接到X网站与http://www.mydomain.com/page.php?query=lol&query2=fail的网页将被Google索引,因为HTTP头被给定为OK。 解决scheme我参考: 事实上,404是我可能会再次结束。 我只是想要一个不同的解决scheme,如果HTTP提供它,但到目前为止,似乎404仍然是最好的解决scheme可用于此,谢谢,所有,我的问题已经发现它的答案。