当proxy_pass超时时如何回收NGINX进程?

92dk7w1h  于 2023-01-20  发布在  Nginx
关注(0)|答案(1)|浏览(153)

在我的nginx配置文件中,我有几个端点使用代理传递到另一个托管静态文件的服务器。我在单个站点配置文件中的当前设置如下:

location /some_location {
        proxy_pass http://some.website.url/version/;
        proxy_http_version 1.1;
        proxy_set_header   "Connection" "";
    }

我将以下内容作为代理参数

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

如果一个请求由于某种原因超时,那么以后所有访问这些文件的尝试都会导致504网关超时。即使由于目标服务器上的问题已经解决,现在可以访问单个文件,我也需要在源服务器上重新启动/重新加载nginx,以使请求正常工作。
是否有一种方法可以回收或重置连接,以便在超时后智能地重试连接?
谢谢!

mutmk8jj

mutmk8jj1#

问题是网站url的ip地址正在改变,而我所做的只是在初始启动时解析dns。下面是我们根据post所做的修复:

location ~ ^/some_location(/?)(.*)$ {
      resolver "aws_vpc_dns_resolver_ip" valid=10s;
      set $backend "some.website.url";
      proxy_pass http://$backend/version/$2;
      proxy_http_version 1.1;
      proxy_set_header   "Connection" "";
    }

相关问题