最近在对比apache和nginx放jboss前面的性能。发现我配置的nginx 对后端server不能使用长连接去连。具体的就是抓包吧:

tcpdump  -i lo  port 7002 and ‘tcp[tcpflags] & (tcp-syn|tcp-fin) !=0 ‘ -nn
可以看到每个请求完毕后连接都关闭了。然后抓包搞一晚上,试过N个版本排查了N久,后恰好看文景同学在线就咨询了一下他。我之前的配置文件是:
upstream jboss {server 127.0.0.1:7002;
keepalive 10;
}………….proxy_set_header Connection "";
proxy_http_version 1.1;
sendfile        on;
rewrite ^$ /index.html permanent;
location / {index  index.html index.htm;
proxy_pass http://jboss;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_intercept_errors on;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
proxy_send_timeout 5s;
proxy_buffer_size 16k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;

} 文景提醒我说proxy_set_header需要配置在一起才行,试过把 proxy_set_header Connection “”;放到location里面后果然就OK了。当然,也可以把这些都直接放在server段,但是注意不要再在location短去设置httpd头.WIKI上的说明是proxy_set_header directives issued at higher levels are only inherited when no proxy_set_header directives have been issued at a given level.