跳过Nginx反向代理在特定URL超时时发出重复请求

跳过Nginx反向代理在特定URL超时时发出重复请求,nginx,server,reverse-proxy,Nginx,Server,Reverse Proxy,下面是针对Rails应用程序的nginx配置的代码片段。正在通过本地主机5478访问该网站。端口5479-82运行ruby实例来处理服务请求时的流量。该应用程序作为面向多个用户的应用程序的备份api,可用于正常操作 问题是,当从应用程序上载一个xls工作表时,导入大约需要5分钟,由于操作超时,nginx使用相同的文件在新端口上发出请求。这将导致在数据库中重复条目。由于文件的大小和内容未知,增加超时将没有帮助。我想控制不应该通过反向代理流的特定url。我应该寻找新的定位块来解决这个问题吗 ups

下面是针对Rails应用程序的nginx配置的代码片段。正在通过本地主机5478访问该网站。端口5479-82运行ruby实例来处理服务请求时的流量。该应用程序作为面向多个用户的应用程序的备份api,可用于正常操作

问题是,当从应用程序上载一个xls工作表时,导入大约需要5分钟,由于操作超时,nginx使用相同的文件在新端口上发出请求。这将导致在数据库中重复条目。由于文件的大小和内容未知,增加超时将没有帮助。我想控制不应该通过反向代理流的特定url。我应该寻找新的定位块来解决这个问题吗

 upstream rails {
    ip_hash; 
    server 127.0.0.1:5479;
    server 127.0.0.1:5480;
    server 127.0.0.1:5481;
    server 127.0.0.1:5482;
  }

server {
listen          5478 default;
server_name     _;
root            "../protac/public";
add_header X-Frame-Options "SAMEORIGIN";

location ~ ^/assets/ {
  root "../protac/public";
  expires 1y;
  add_header Cache-Control public;

  add_header ETag "";
  break;
}

location ~* /  {


  # Setup redirection headers
  proxy_set_header   X-Real-IP         $remote_addr;
  proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
  proxy_set_header   Host              $http_host;

  proxy_buffer_size   128k;
  proxy_buffers   4 256k;
  proxy_busy_buffers_size   256k;

  # Pass the request thru
  proxy_pass         http://rails;
  add_header X-Frame-Options "SAMEORIGIN";
}

当您配置了多个上游服务器时,会有一个
proxy\u next\u upstream
指令,该指令控制当一个服务器无法处理请求时会发生什么情况,默认情况下,如果超时或获取响应时出错,nginx将使用另一个上游服务器重试

如果您不希望出现这种行为,并且对于您的特定情况(5分钟的上载),可以使用
proxy\u next\u upstream\u timeout
指令,以防止它在指定的时间后尝试新的上游。给它一个合理的低时间去捕捉那些长时间的超时


或者,您可以为此类上传定义一个特定位置,并将
proxy\u next\u设置为off用于该位置,以防止仅在该位置上发生此行为。

您是否已解决此问题?我遇到了一个类似的问题