Articles of http

nginx:转储HTTP请求进行debugging

Ubuntu 10.04.2 nginx 0.7.65 我看到一些奇怪的HTTP请求来到我的nginx服务器。 为了更好地理解正在发生的事情,我想为这样的查询转储整个HTTP请求数据。 (即转储所有的请求头和身体的地方,我可以阅读它们。) 我可以用nginx做这个吗? 另外,是否有一些HTTP服务器,允许我这样做的开箱即可,我可以通过nginx的方式代理这些请求? 更新:请注意,这个盒子有一堆正常的stream量,我想避免在低级别(比如使用tcpdump )捕获所有的stream量,然后过滤掉。 我认为在重写规则中首先过滤好stream量将会容易得多(幸运的是,在这种情况下,我可以很轻松地写出一个stream量),然后只处理虚假stream量。 而且我不想将伪造的stream量引导到另一个盒子,只是为了能够使用tcpdump捕获它。 更新2:为了给出更多的细节,伪请求在他们的GET查询中具有名称(说) foo的参数(参数的值可以不同)。 好的请求保证不会有这个参数。 如果我可以通过tcpdump或ngrep以某种方式进行过滤 – 没问题,我会使用这些。

如何testing保持活着是在客户端上工作

有什么不同的方式/工具来validation从客户端到服务器上的保持活动状态?

nginx发送空白200个响应

我正在configuration一个故障转移服务器,负责接受任何传入的请求,并回复空白的200响应。 这个想法是尽量减less回复时间,并确保我们不发送任何40倍或50倍。 我试过使用return 200; 对于Nginx中所需的位置,但我的监控系统(Pingdom)不喜欢响应,并认为服务器没有响应。 有没有更好的方法来做到这一点,当然在服务器上的开销最小?

运行一个API,如果我纠正了一个内容types的头文件,会为客户带来什么?

我们正在运行一个API,有相当多的人使用它。 由于我的一些传统的笨拙,其中一个端点是返回错误的内容types的头 , js时它应该是json 。 我的问题是,如果我们通过交换来解决这个问题以回报正确的价值,那么我们现有的客户有多混乱呢? 换句话说,当你看到这样的改变时,你会期望很多不同的HTTP客户端库会引发致命的错误吗? 我们正在试图确定这是否是一个我们可以继续前进的变化,而不是让它变得太多,或者我们应该仔细地向所有用户发送电子邮件,并宣布一个为期多年的贬低期…或者其中的一些东西。 它可能取决于使用什么样的不同的HTTP客户端,所以我看了一下用户代理。 答:很多不同的! 这里是一些顶级的: “okhttp / 3.2.0”,“python-requests / 2.10.0”,“Ruby”,“python-requests / 2.7.0”,“Mozilla / 5.0”,“Java / 1.8.0_91”,“python-requests /2.4.3“,”okhttp / 3.3.0“,”Lucee“,”Dalvik / 2.1.0“,”Google-HTTP-Java-Client / 1.21.0“,”PHP_appname“,”NativeHost“,”Java /1.7.0_67“,”Apache-HttpClient / UNAVAILABLE“,”Dalvik / 1.6.0“,”Web-sniffer / 1.1.0“,”unirest-objc / 1.1“ 各种不同的移动和服务器端语言库。 大多不是浏览器运行的JavaScript,但也有一些。 大多数人似乎没有注意到内容types是错误的,但是不时地出现一个新的支持请求,抱怨这个问题,所以我们想修复它。

IIS 6.0上的HTTP压缩(Windows Server 2003)

在IIS 6.0(Windows Server 2003)上启用HTTP压缩时,有许多事情需要考虑。 有人可以提供一个你必须采取的行动,以便正确启用HTTP压缩的综合列表?

在HTTP2下,新的TCP连接多久发起一次?

我明白,HTTP2的目的是保持一切在一个单一的TCP连接,我想知道多久的TCP连接将被拆除。 例如,如果我访问YouTube,做一些浏览,离开网站,然后回来,我将重新使用相同的HTTPS连接(在TCP 4元组,NOT会话方面),还是不同的? 很多这可能是特定于应用程序,并且浏览器如何实现它,但它在标准中的任何地方指定?

HTTP GET方法如何与DNS协议相关?

我想了解TCP / IP堆栈中的应用层协议。 我知道,HTTP和DNS协议都停留在顶层(应用层)。 所以,当一个浏览器想访问一个资源时,它必须向HTTP服务器发送一个请求,例如: GET www.pippo.it/hello.htm HTTP/1.1 按照HTTP协议的规则提出请求,它使用页面URL而不是IP地址。 我知道DNS请求是必要的,以将URL转换为IP。 所以我的问题是:HTTP调用DNS协议? 对我来说似乎是不可能的,因为两者都是顶层协议(所以DNS不能为HTTP提供服务)。 以同样的方式,甚至TCP(在较低级别上)也不能要求更高级别的协议(如DNS)提供服务。 那么DNS请求何时发生? 谁来执行这样的请求?

我可以创buildSSH来通过服务器隧道HTTP像它是代理?

说我有一个server和client 。 我需要通过server创build从client website连接,就像它是代理服务器。 是否可以使用SSH tunel来做到这一点,或者我必须安装一些代理服务到server ?

statsd和石墨的高可用性,Web访问和可扩展的部署

我想设置statsd / graphite,这样我就可以logging在HTML设备上运行的JS应用程序(即不在包含的LAN环境中,并且可能有大量不直接控制的传入数据)。 我的约束: 入口点必须说HTTP:这是通过一个简单的HTTP-to-UDP-statsd代理(例如github上的httpstatsd) 必须抵制单一服务器的失败(与墨菲定律对抗:) 必须横向扩展:webscale,宝贝! 🙂 架构应尽可能保持简单(和便宜) 我的服务器是虚拟机 数据文件将存储在Filer设备上(使用NFS) 我有tcp / udp硬件负载平衡器处置 总之,数据path:[client] – (http) – > [http2statsd] – (udp) – > [statsd] – (tcp) – > [graphite] – (nfs) – > [filer] 我的发现迄今为止: 缩放http2statsd部分很简单(无状态的守护进程) 缩放statsd部分似乎并不简单(我想我最终会得到非整数值的石墨集合数据,如sum,avg,min,max …)。 除非HTTP守护进程为了分割密钥而执行一致性散列。 也许是一个想法…(但那是医pipe局的问题) 缩放石墨部分可以通过分解(使用碳中继)完成(但是这也不能解决HA问题)。 显然几个耳语实例不应该写入相同的NFS文件。 缩放文件pipe理器部分不是问题的一部分(但IO越less越好:) 缩放webapp似乎很明显(虽然我没有testing),因为他们只读取共享的NFS数据 所以我想知道是否有人有经验和最佳做法,分享一个坚实statsd /石墨部署?

Google SPDY – 有没有人在Apache上使用过它?

只是想知道是否有谁有经验与谷歌SPDY在Apache? http://code.google.com/p/mod-spdy/ 我运行了几个Web服务器,并且有兴趣知道mod_spdy Apache模块是否有任何问题,并且如果有人在SPDY支持的浏览器中看到了可见的速度增加?