0. code 499

刚部署的新站点,配置好 tomcat,nginx,server_name,访问正常,使用的是阿里云服务器,但是过了一会儿就不行了,客户端访问后一直没有数据返回。查看日志找原因.

nginx log:

*.*.*.* - - [24/Sep/2013:18:01:03 +0800] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36"

tomcat log:

[com.xxx] 2013-09-25 10:24:36 >>> params:{}
[com.xxx] 2013-09-25 10:24:36 185#uid:0#startTime:1380075876184#endTime:1380075876185#duration:1 >>> result:{"msg":"null","s":404}

  tomcat 工作正常呢,正常处理数据并正确返回了。问题在nginx上了,没有把数据返回到客户端。看看状态码499是啥原因。

#####1. 原因分析

reason:

/*
* HTTP does not define the code for the case when a client closed
* the connection while we are processing its request so we introduce
* own code to log such situation when a client has closed the connection
* before we even try to send the HTTP header to it
*/
#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499

  客户端主动断开了连接,我用浏览器访问还主动断开连接?tomcat返回数据只用了1毫秒(duration:1),不可能是超时呀。难道是nginx返回数据没有返回到80端口,而是返回到tomcat的8080端口了?这个问题以前遇到过,只需要关闭代理重定向就可以了。

proxy_redirect          off;                     #关闭代理重定向 

#####2. 问题在哪里

  还是不行,整个环节都没有问题呀,那问题一定是出在域名解析或者阿里云服务器上,直接打电话到阿里云,原来是域名没有备案,被阿里云拦截了。坑,当初使用的时候,别人告诉我,域名已经备案了的。这样的问题,使用前就应该检查下的。

  不是我们不应该去相信别人,而是很多人做事比较马虎。正如当你迷路的时候去问路一样,别人多半都是热心的帮你指路了,但是事实上,很多时候他也不熟悉了,只是觉得应该是那条路而已。所有在相信别人的同时也要有一定的怀疑态度。