我正在使用变量来定义我的proxy_pass目标,类似于this answer,除了在我的情况下,该值是从传入请求的查询参数中提取的,例如, /?url = http://example.com将代理到example.com。由于proxy_pass参数是一个变量,我的配置中没有上游指令。代理工作正常。但是,在每次请求后关闭连接,我希望它们存活以分摊TCP握手。根据{{3}},这需要上游指令中的keepalive指令。如果没有上游指令,我怎么能这样做?
这是我的完整配置:
server {
if ($arg_url ~ \/\/([^\/]*)) {
set $proxy_host $1;
}
if ($proxy_host = "") {
return 404;
}
resolver 8.8.8.8;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $proxy_host;
proxy_pass $arg_url;
}
}