在src/event/ngx_event_connect.c中,方法ngx_event_connect_peer(ngx_peer_connection_t *pc)里设置了缓冲区大小,代码如下:
if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, (const void *) &pc->rcvbuf, sizeof(int)) == -1)
此处的&pc->rcvbuf即缓冲区大小。
但是此方法是针对于upstream来说的,所以缓冲区都是针对于后端服务的。
那么,针对于客户端和nginx之间的socket的缓冲区在哪设置呢?在core/ngx_connection.c文件中,ngx_configure_listening_sockets(ngx_cycle_t *cycle)方法中,即初始化socket时会设置。
另外,要知道的两点:
1. 该值是怎么获得的?可以看http://blog.csdn.net/dingyujie/article/details/7258357这篇文章,还有http://www.ki19.com/linux-304526.html这个答疑。
2. 如何设置?是通过更改源文件,还是有接口调用?在src/http/ngx_http.c文件的ngx_http_init_listening方法中直接修改ls->rcvbuf的大小