首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过Nginx反向代理在特定URL超时进行重复请求

跳过Nginx反向代理在特定URL超时进行重复请求
EN

Stack Overflow用户
提问于 2019-06-17 14:47:21
回答 1查看 1.2K关注 0票数 2

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

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

代码语言:javascript
复制
 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";
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-03 03:15:58

当你配置了几个上游服务器时,有一个proxy_next_upstream指令,它控制如果一个请求不能被其中一个服务器处理时发生的情况,默认情况下,如果超时或获取响应时出错,nginx将使用另一个上游服务器重试。

请参阅proxy_next_upstream documentation

如果您不想要此行为,并且针对您的特定情况(上传5分钟),您可以使用proxy_next_upstream_timeout指令,该指令可防止它在指定的时间后尝试新的上游。给它一个合理的低时间来捕捉那些特别长的超时。

或者,您可以为此类上载定义一个特定位置,并为该位置设置proxy_next_upstream off;,以防止仅在该位置上发生此行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56625962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档