Articles of http

我的networking服务器是否允许预取?

我有一个基于图像的网站,主持多个画廊。 当用户点击其中一个图像时,特定图像的views属性会增加。 不过,我注意到当使用Firefox(14.0.0.1)时,它将视图增加了两倍,而不像K-meleon那样复杂的浏览器增加了一次属性 – 就像它应该那样。 有人然后在stackoverflow指出,这可能是由于在现代浏览器中的预取导致PHP脚本,从数据库中提取图像,并增加视图执行两次。 所以,检查我的apache access.log我注意到,Firefox确实要求每个图像两次: Firefox / 14.0.1“:: 1 – – [03 / Aug / 2012:16:41:37 +0100]”GET /imgsite/getImg.php?id=23 HTTP / 1.1“200 57362” http:// localhost /imgsite/index.php“”Mozilla / 5.0(Windows NT 6.1; rv:14.0)Gecko / 20100101 Firefox / 14.0.1“:: 1 – – [03 / Aug / 2012:16:41:37 +0100]” GET /imgsite/getImg.php?id=23 HTTP / 1.1“200 57362” – “”Mozilla […]

nginx:在重写的位置块中指定自定义标题

我正在尝试为nginx中的特定location块设置一些标头。 我遇到的问题是这些location块包含rewrite语句,显然这似乎删除自定义标头。 在这个例子中,我有两个规则: 里面的/static文件应该已经expires max; (其中设置头Cache-Control: max-age=some huge value和Expires: some future date really far off ),并将其名称被重写为不包含/static 其他地方的文件应该有Cache-Control: public (没有max-age ) 这是我尝试的configuration: server { listen [::]:80; root /somepath; location /static { expires max; rewrite /static(.*) /whatever$1; } add_header Cache-Control public; } 并具有以下目录结构: /somepath /somepath/f1.txt /somepath/static/f2.txt 然后我们得到以下内容: f1.txt : Cache-Control: public ,no Expires标题 f2.txt : Cache-Control: public […]

HTTP请求的gzip不正确,找不到是谁在做

我们看到一些非常奇怪的HTTP响应,我们不知道是什么做的。 我们有一个应用程序服务器处理JSON请求。 有时候,响应会被gzip返回,但带有不正确的头部,导致浏览器无法正确解释。 问题是间歇性的,随着时间的推移会改变行为。 昨天上午,它似乎失败了50%,事实上,似乎与我们的两个负载平衡服务器之一。 在下午的晚些时候,它只有1000次失败了20次,并没有与应用程序服务器相关联。 这两个应用程序服务器使用mod_wsgi和Django应用程序堆栈运行Apache 2.2。 他们有相同的Apacheconfiguration和源代码树,甚至在Red Hat上安装相同的软件包。 前面有一个硬件负载平衡器,我不知道这个品牌或型号。 Akamai也是食物链的一部分,尽pipe我们移除了Akamai,但仍然存在问题。 这是一个很好的要求和回应: * Connected to example.com (97.7.79.129) port 80 (#0) > POST /claim/ HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: example.com > Accept: */* > Referer: http://example.com/apps/ > Accept-Encoding: gzip,deflate > Content-Length: 29 > Content-Type: application/x-www-form-urlencoded > } [data not […]

Apache中神秘的GET请求

我已经从我的开发者服务器上得到了一些来自未知IP的奇怪GET请求。 我不知道这是一些奇怪的字符编码或其他东西。 神秘的是,我的服务器响应状态200,所以input匹配的东西,但我不知道是什么。 请求是":\xcc\x89\xa9L\xcf\xc3\xb6\xc1\x8f\xa9\xe7\xc0\xec\x16" 想法? 编辑:更正了请求,它不是一个GET请求,但仍返回根索引页面。 编辑2:刚刚popup一个新的: xxx.xxx.xxx.xxx – – [20/Oct/2010:09:10:33 +0300] ";\x8e\xb0!\xa2\xa7\xe7\x11\xf1HX\xb6\x188|z\x9b\xac;z\x10\xafn\xd8*fD\x9d\xc1\x11I\x9a5\xe6\xcbu,\x8c\xd7\x84O[\xf7\xca\xe67\xe5\xba\x94\xdd.\xc0d\xd0} " 200 2085 "-" "-" 不,绝对不是unicode了…

如何使Varnish不被忽略,而不是删除cookies

我想使用Varnish来caching某些页面,即使存在cookie。 有三种可能性,我需要照顾: 匿名用户正在查看某个页面 login的用户正在用光定制查看某个页面。 这些自定义都存储在一个signed-cookie中,并由Javascriptdynamic填充。 不同的cookie http头没有设置。 login的用户正在使用数据库中的自定义数据查看某个页面。 不同的cookie http头被设置。 预期的行为将是: caching页面。 这是Varnish处理的最基本的情况。 caching页面,不要删除cookie,因为一些Javascript逻辑需要它。 永远不要caching这个页面,因为不同的cookie正在传递cookie的内容会影响这个页面的输出。 我已经阅读了一些关于Varnish的文档,我不知道这是默认行为,还是在VCL中需要做一些设置才能实现。

与Windows 7的HTTP(随机?)连接超时

更新: 重新安装Windows 7 安装了Windows 8 各种Apache的调整(AcceptFilter HTTP无…) 安装了Windows XP 一些Wireshark日志 1 0.000000000 HonHaiPr_0b:36:ae D-LinkIn_64:ca:28 ARP 42 Who has 192.168.0.1? Tell 192.168.0.102 2 0.001844000 D-LinkIn_64:ca:28 HonHaiPr_0b:36:ae ARP 42 192.168.0.1 is at 28:10:7b:64:ca:28 适用于XP,太糟糕了PHP正在失去支持。 问题:我应该把路由器扔出窗外吗? 我不能责怪Windows(在我心里深处我想) 我正在经历(几乎)随机连接超时,与Windows7上的Apache,以至于我害怕打F5 …我不能解释什么时候发生,因为我无法find模式。 给我麻烦的计算机就是马里奥想要打的那个。 这是有趣的部分,它不能从另一台Windows电脑上访问(虽然发生超时),但它可以从Linux的 。 发生超时消息后(大约30秒后),它通常再次工作,如果没有,我必须重新启动Apache。 他们无线连接到便宜的D-Link路由器,然后通过电缆连接。 当一切正常运作时: 我可以从任何电脑访问 我可以通过DynDNS从外部(互联网)访问 我可以访问networking(共享)没有问题 我没有头痛 当它不是: 我无法通过HTTP访问( http://192.168.0.111 ) 我无法通过DynDNS从外部(互联网)访问 我可以访问networking(共享)没有问题 我可以从networking上的Linux计算机访问 我可以从有问题的电脑( http://127.0.0.1 […]

nginx proxy_pass重写响应头的位置

这个nginx实例的目的是让GitLab和OpenWRT Luci通过一个反向代理redirect。 它已经为其他几个网站工作,所有这些网站都有一个基本的url,似乎对付这个问题。 本例中的GitLab在端口9000上的本地服务器上。 nginx网站在8080端口上。 OpenWRT具有完全相同的问题,但使用/ cgi-bin / luci / 示例位置的相关nginxconfiguration是; location /gitlab/ { proxy_pass http://127.0.0.1:9000/; proxy_redirect default; } 请注意,结果是相同的和没有一个结尾的斜线。 有一些头代理configuration选项被应用到这个位置。 # Timeout if the real server is dead proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Basic Proxy Config proxy_set_header Host $host:$server_port; proxy_set_header Origin $scheme://$host:$server_port; proxy_set_header Connection $http_connection; proxy_set_header Cookie $http_cookie; proxy_set_header Upgrade $http_upgrade; […]

如何在Ubuntu 15.10上安装支持HTTP 2(1.95或更高版本)的nginx 1.9x

我试图在我的Ubuntu 15.10上安装最新的nginx版本(1.99)。 我想要一个nginx版本> = 1.95,因为我喜欢有http 2的支持。 我遵循我在互联网上find的指示ubuntu 14.04,但应该是相同的Ubuntu 15.10( http://www.liberiangeek.net/2014/10/install-latest-version-nginx-ubuntu-14-10 / ): 下载Nginx存储库authentication密钥: cd /tmp/ && wget http://nginx.org/keys/nginx_signing.key 安装存储库密钥: sudo apt-key add nginx_signing.key 为Nginx创build一个新的存储库文件 sudo nano /etc/apt/sources.list.d/nginx.list 然后复制并粘贴下面的行到文件中并保存(“wily”是我的15.10 Ubuntu版本的Ubuntu代号) deb http://nginx.org/packages/mainline/ubuntu/ wily nginx deb-src http://nginx.org/packages/mainline/ubuntu/ wily nginx 但是当我终于执行命令时: apt-get install nginx 我得到了以下错误: nginx : Depends: libc6 (>= 2.14) but 2.13-38+deb7u8 is to be installed Depends: […]

通过WiresharkparsingHTTP请求?

有没有办法parsingwireshark中的HTTP请求数据? 例如,我可以在HTTP GET请求(由我的机器发送)上公开请求参数,以便我不需要读取(有时)截断的URL并自己find它们? 我在Firefox上使用了Tamper Data和Firebug来分析这些请求,但是它们不如监视我的networking接口的独立工具那么可靠,但wireshark保持有关HTTPstream的数据太原始。 如果你们知道有其他独立的工具(必须是Linux兼容的),请告诉我。 谢谢!

什么出站HTTP节stream解决scheme存在?

我正在寻找一种方法来灵活地pipe理出站HTTP / HTTPSstream量,尊重网站策略,并且可以部署在我们数据中心networking的“边缘”。 例如,我们使用几个具有“每秒不超过4个请求”或“每天最多5万个请求”等限制速率的Web API。在公司中有许多人使用这些类似的各种服务,所以我不能集中pipe理软件中的所有请求。 人们以不同的时间表和不同的强度运行这些东西。 我们很好(满足内部需求),但是我们意识到 – 总体来说,我们可能会陷入产生如此多的并发stream量的情况,以至于我们被网站阻止。 (虽然这是无意的) 我所期望/希望的是,我们可以利用networking硬件世界中已经存在的带宽pipe理/stream量整形解决scheme,并随后在数据中心networking的边缘部署这样的解决scheme。 理想情况下,我可以编写L4或L7路由规则,这样可以确保我们的数据中心不会产生超过 – 例如4 req / sec的出站数据。 其余的请求在理想情况下也会在硬件上排队等待一段合理的时间,而队列容量超出的情况将被拒绝。 我意识到没有免费的午餐,节stream不会解决一个根本的内在需求(请求)与供应(网站策略)问题。 但是,节stream将使我们能够在某个窗口(比如说一天)“平滑”请求,以便我们能够以适当的方式利用外部服务,同时最大限度地利用我们的使用。 有没有人知道这样的networking级带宽pipe理解决scheme? 如果是这样,它是否也支持不仅基于HTTP请求中的URL而且还有一些额外的HTTP头的规则?