Nginx 在没有上游的情况下保持活动状态

use*_*280 6 nginx proxypass

我使用一个变量来定义我的 proxy_pass 目标,与此答案类似,但在我的情况下,该值是从传入请求的查询参数中提取的,因此例如 /?url= http://example.com将被代理到example.com。由于 proxy_pass 参数是一个变量,因此我的配置中没有上游指令。代理工作正常。然而,连接在每次请求后都会关闭,我希望它们活着来分摊 TCP 握手。根据这些指示,这需要在上游指令中使用 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;
  }
}
Run Code Online (Sandbox Code Playgroud)