2 allus0918 allus0918 于 2016.05.03 20:47 提问

nginx重复发送请求到服务器

在测试环境进行nginx配置时,为防止超时,全部把超时参数配置为10分钟。但是在拉取数据时还是到60S后就报错,提示“数据正在下载中,请稍后再试“,表明已在缓存中。
目前怀疑是nginx重复发送请求(或者请求超时之后,nginx把请求转发给另一台服务器)所致,因为跳过nginx服务器拉取数据是正常的。
配置如下:
http {
include mime.types;
default_type application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  log/main-access.log  main;

sendfile        on;
tcp_nopush      on;
tcp_nodelay        on;
keepalive_timeout  600;
lingering_timeout  600;
send_timeout  600;

gzip  on;
gzip_min_length 1k;
gzip_buffers    8 32k;
gzip_comp_level 6;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;


client_max_body_size 8m;
client_body_buffer_size   256k;
client_header_timeout 600;
client_body_timeout  600;

proxy_next_upstream  off;
proxy_connect_timeout  600;
proxy_send_timeout   600;
proxy_read_timeout   600;
proxy_buffer_size   128k;
proxy_buffers   8 256k;
proxy_busy_buffers_size   256k;
proxy_temp_file_write_size  256k;

upstream web1 {
    server ip:port;
}

upstream web2 {
    server ip:port;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass  http://web1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        index  index.html index.jsp login.jsp index.htm;

        #root   html;
        #index  index.html index.htm;
    }

    location /admin {
        proxy_pass  http://web2;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        index  index.html index.jsp login.jsp index.htm;
    }
    ...
}
...

}

请教一下,如果避免nginx重复请求,该怎么设置?
或者nginx转发请求给另一台服务器,又该怎么设置?
如果问题不是出在这里,那么该怎么分析并解决这个问题?

nginx接触不久,很多配置还都不熟悉,恳请对nginx了解的大神能不吝指教,拜谢。

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.05.03 21:45

查看nginx的error log等看是否有超时等然后看后台服务器相关日志 是如何处理的

allus0918
allus0918   2016.05.04 11:34

引用1楼
“查看nginx的error log等看是否有超时等然后看后台服务器相关日志 是如何处理的”

我不知道是不是没有设置重复发送请求在error.log中打日志,但是我实时检测该日志,在提示报错的时候是没有error日志打出来的,有点郁闷

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Nginx重试引发Http请求重复执行
Nginx重试引发Http请求重复执行 PS:这个月还真的发现一笔订单请求服务端实际产生了两笔订单,听负责处理的同事说是Nginx方面的问题,准确的原因也没有解释详细,今天无意中看到此文,感到文章中的分析与此次线上问题情况符合,特地转载过来。
nginx 重复提交 重复请求问题
我遇到的奇葩问题。后台使用的是nginx + tomcat前端页面确实只发送了一个ajax请求到后台。 后台却接收到了两条请求!百度了一下,说是因为nginx负债均衡,一个请求超时后会重复发送一次请求给下一个服务端。反正我对nginx不是很了解。网上说在nginx.conf中配置: proxy_next_upstream off; 或 proxy_next_upstream erro
ajax重复发送请求的问题
自己是一个刚从事前端开发工作的技术渣,在做项目完成后,测试发现有一个问题,我检查了一下,发现ajax重复调用一个数据接口,造成多次弹出请求后返回的信息。 自己网上查查了,找到了问题的原因和解决方法,在这里记录下来。 1.造成重复提交原因 由于AJAX提交数据为异步提交,所以当我们点击提交按钮是通过xmlhttprequest向服务器发送异步请求,发送请求需要有处理时间,我们第一次点击
防止tab页反复的去请求服务端
直接看图吧。 左边是企业数,右边是根据企业变化的一个tab页 实现功能:1.我们希望如果选中的企业不变,我们在切换旁边五个tab页的时候,只是第一次进去的时候请求服务器端。接下来切换都不请求服务器端(前提企业数不切换)。                      2. 如果选中的企业变化,相应的 右边的表结构也要跟着相应的变化。 思路。1.企业数不切换的时候,没点击一次tab
Nginx重定向[Rewrite]配置
nginx rewrite 详解 参数含义 示例展示
关于HTTP客户端重复发送请求的问题
关于HTTP客户端重复发送请求的问题 问题描述:在进行HTTP接口联调的过程中发现的问题,外围厂商HTTP服务端查看日志发现,客户端有重复发送请求的情况。   经过一些列的查询、学习、追踪,及大家的帮助最终确认了问题原因,并成功解决。写出来与大家分享。如果有遇到类似问题的朋友路过,希望有借鉴意义。 首先检查客户端程序是否有重复发送的可能,核对程序源码及接口日志发现客户端并没有重复发送请
nginx的请求接收流程(二)
在ngx_http_process_request_line函数中,解析完请求行之后,如果请求行的uri里面包含了域名部分,则将其保持在请求结构的headers_in成员的server字段,headers_in用来保存所有请求头,它的类型为ngx_http_headers_in_t: typedef struct { ngx_list_t h
nginx重试机制-重新发起请求导致的问题
在本地环境测试通过的代码,在线上环境却出现问题,在开发过程中,我们经常会遇到这种情况,而多数情况下本地无法重现。nginx的重试机制,一种nginx在负载均衡情况下的容错机制,也会带来这样 的问题。nginx配置文件中proxy_next_upstream参数的配置说明:Syntax: proxy_next_upstream error | timeout | invalid_header | ht
Nginx高性能Web服务器详解
Nginx高性能Web服务器详解 Nginx高性能Web服务器详解 Nginx高性能Web服务器详解
如何防止重复发送Ajax请求
做一个项目,里面需要js 异步请求的时候,把上一次的的请求取消,由于使用的是jquery,挡在手册里没有找到关于.abort()方法,在网上搜索了一下,在http://ooxx.me/jquery-ajax-abort.orz看到有关于jquery 里.abort()使用方法,直接用例子:   current_request = $.get('/events', { '七夕': '