我在AWS中有一个具有上游应用层的nginx实例.
nginx有两个要求
- keepalive
- 使用解析器动态解析上游
我能够使其中任何一个工作.
这是使keepalive工作的配置:
upstream "backend" {
server "appserver.example.com:443";
keepalive 250;
}
server {
resolver 10.0.0.2 valid=60s;
server_name _;
location / {
proxy_http_version 1.1;
proxy_pass https://backend;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是DNS解析器的配置:
server {
resolver 10.0.0.2 valid=60s;
server_name _;
set $backend appserver.example.com:443;
location / {
proxy_http_version 1.1;
proxy_pass https://$backend;
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用开源NGinx中的第三方插件的情况下同时使DNS解析器和keepalive工作
该文档说以下
设置用于代理的HTTP协议版本。默认情况下,使用1.0版。建议将1.1版与Keepalive连接和NTLM身份验证配合使用。
在我的nginx配置中
location / {
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:1980;
}
Run Code Online (Sandbox Code Playgroud)
直接执行http://127.0.0.1:1980我可以看到我的应用在一个连接上收到了很多请求(刷新时)。这是我发送的回复
HTTP / 1.1 200 OK \ nContent-Type:文本/ html \ nContent-Length:14 \ n连接:keep-alive \ n \ nHello World!
但是nginx发出一个请求并关闭它。什么 我可以看到nginx发送了“ Connection:keep-alive”标头。我可以看到它添加了服务器和日期标头。我尝试添加,proxy_set_header Connection "keep-alive";但没有帮助。
我如何让Nginx不关闭每个线程的连接?