Hello!
2015-09-07 10:36 GMT+08:00 X山鹰:
> 直接使用proxy_pass进行代理, 在不使用upstream的情况下。可以实现keepalive吗
> 配置如下:
> location / {
> proxy_pass http://$host;
> proxy_http_version 1.1;
> proxy_set_header Connection "";
> }
>
不可以。因为 ngx_proxy 的连接池依赖于 keepalive 指令,而它只能在 upstream {} 配置块中使用,见
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
如果你的代理目标是有限多个,你可以事先定义多个 upstream {} 配置块,然后在你传递给 proxy_pass 的 nginx
变量中使用已配置的某个 upstream 的名字。
另一个选择是使用基于 ngx_lua cosocket 的代理。
最后,待 ngx_lua 模块的 balancer_by_lua 在未来一二个月内发布时,现有的 keepalive 指令也可以和动态的
upstream peer 列表一起工作(此时 upstream 配置块支持每请求的动态 peer 列表)。
Regards,
-agentzh