浏览 3.8k
作为一个nginx初学者,我最近在上手编写一个类似字符串替换filter模块。其中在阅读其他filter模块的过程中,经常会看到 r != r->main 或 r == r->main 这样的代码,如下所示:
if (r == r->main) {
ngx_http_clear_content_length(r);
if (!slcf->last_modified) {
ngx_http_clear_last_modified(r);
ngx_http_clear_etag(r);
} else {
ngx_http_weak_etag(r);
}
}
一直无法明白类似这段代码的逻辑的目的所在,查阅了各种资料也没有找到答案,特在此向各位大佬请教!
proxy_http_version为1.1,同时Connection: keep-alive,这只是说:HTTP协议是支持长连接的。但客户端要不要使用长连接呢?如果使用长连接,就得有连接池,那么连接池应该是多少呢?毕竟一旦有连接池,就可能存在资源浪费,在用户没有明确的配置keepalive连接池时,Nginx还是不会使用长连接。
LOG如下:偶数次是超时。
Hello and welcome!
test-->
--->
0:{"user": "demo1","age": 1}
--1->
--2: 200
--3:: [POST] test!
--5->
disconnect()
return :[POST] test!
--->
1:{"user": "demo1","age": 2}
--1->
java.net.SocketTimeoutException: Read timed out
disconnect()
return :java.net.SocketTimeoutException: Read timed out
--->
2:{"user": "demo1","age": 3}
--1->
--2: 200
--3:: [POST] test!
--5->
disconnect()
return :[POST] test!
--->
3:{"user": "demo1","age": 4}
--1->
java.net.SocketTimeoutException: Read timed out
disconnect()
return :java.net.SocketTimeoutException: Read timed out
--->
4:{"user": "demo1","age": 5}
--1->
--2: 200
--3:: [POST] test!
--5->
disconnect()
return :[POST] test!
--->
5:{"user": "demo1","age": 6}
--1->
java.net.SocketTimeoutException: Read timed out
disconnect()
return :java.net.SocketTimeoutException: Read timed out
Process finished with exit code 0
微信公众号
加入微信群