(特别是,ASP.NET回发 – 但即使只有其中一些)
我有nginxconfiguration为反向代理一个ASP.NET服务器。 大部分工作非常好。 所有GET请求都起作用,并且大多数POST请求也起作用。 大多数ASP.NET回发工作。 但是偶尔会有一个回复,因为一些我不明白的原因,每一次都没有得到答复(也就是保证失败)。
这个特定的服务器被configuration为可以通过指定端口号直接访问ASP.NET实例(绕过nginx)。 当nginx被绕过时,一切正常,所有的请求立即被回应。
我能做些什么来进一步debugging呢? 我一直无法让Nginxlogging事件,比如开始和结束上游请求/响应,更不用说整个机构了。 提琴手不能帮助,因为没有任何错误的请求从浏览器到nginx; 这个问题发生在nginx和ASP.NET之间。 任何其他的想法?
configuration摘录: http : //pastebin.com/FyTtuUQZ
这可能与Keepalive有关,因为回发最终会在大约65秒后超时 – 上述configuration中指定的时间为保活超时。 但这可能是一个红鲱鱼。
PS它是一个仅限于开发的服务器,反向代理的目的是这样我们可以在这台机器上指向几个域,并且不兼容的服务器都显示为在端口80上。但是为了让我相信nginx reverse代理生产服务器,我需要了解这个问题,以确保它不会影响生产。
问题:即使请求中没有Expect: 100-continue ,ASP.NET开发服务器也会发送100个“继续”响应。 Nginx会发出一个没有Expect头的请求; ASP.NET将用一个响应,然后接收其余的请求,然后发送实际的响应。 然而,Nginx只会转发100 Continue部分。 它不会转发实际的回应; 吞下,至less在nginx 1.4.2上。
解决scheme:使用IIS,即使这整个设置仅用于开发目的。