客户端连接上,一会就荡掉了,然后直接连接服务器,没有荡掉了,说明是nginx代理出现问题·,我们去修改一下配置文件即可。

清零SO_SNDBUF ,,通过listen 80 sndbuf=0; 参数修改

upstream Myserver {
       # simple round-robin  转发IP和端口
        server 127.0.0.1:6000 weight=1 ;#max_fails=3 fail_timeout=30s;
        server 127.0.0.1:6002  weight=1 ;#max_fails=3 fail_timeout=30s;
    }
    server {
        proxy_connect_timeout 1d;
        proxy_timeout 3d;
        listen 8000 sndbuf=0; #监听端口8000

proxy_pass  Myserver;
        tcp_nodelay on;
       
    }

SO_RCVBUF && SO_SNDBUF

先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到socket的内核接收缓冲区之中。read所做的工作,就是把内核缓冲区中的数据拷贝到应用层用户的buffer里面,仅此而已。进程调用send发送的数据的时候,最简单情况(也是一般情况),将数据拷贝进入socket的内核发送缓冲区之中,然后send便会在上层返回。换句话说,send返回之时,数据不一定会发送到对端去(和write写文件有点类似),send仅仅是把应用层buffer的数据拷贝进socket的内核发送buffer中。后续我会专门用一篇文章介绍read和send所关联的内核动作。每个UDP socket都有一个接收缓冲区,没有发送缓冲区,从概念上来说就是只要有数据就发,不管对方是否可以正确接收,所以不缓冲,不需要发送缓冲区。

接收缓冲区被TCP和UDP用来缓存网络上来的数据,一直保存到应用进程读走为止。对于TCP,如果应用进程一直没有读取,buffer满了之后,发生的动作是:通知对端TCP协议中的窗口关闭。这个便是滑动窗口的实现。保证TCP套接口接收缓冲区不会溢出,从而保证了TCP是可靠传输。因为对方不允许发出超过所通告窗口大小的数据。 这就是TCP的流量控制,如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方TCP将丢弃它。 UDP:当套接口接收缓冲区满时,新来的数据报无法进入接收缓冲区,此数据报就被丢弃。UDP是没有流量控制的;快的发送者可以很容易地就淹没慢的接收者,导致接收方的UDP丢弃数据报。
以上便是TCP可靠,UDP不可靠的实现。
这两个选项就是来设置TCP连接的两个buffer尺寸的。

Nginx代理时客户端容易荡掉相关推荐

  1. PHP、Tomcat获取Nginx代理后的客户端真实IP

    PHP.Tomcat获取Nginx代理后的客户端真实IP 文章目录 PHP.Tomcat获取Nginx代理后的客户端真实IP 一.PHP获取Nginx代理后客户端真实IP Nginx配置 PHP配置 ...

  2. nginx代理https后,spring mvc web应用redirect https变成http

    用nginx 代理https后,应用redirect https变成http,导致网站无法访问 浏览器到nginx是https,nginx到应用服务器变成http, 应用服务器,再做302 redir ...

  3. Vue改用history模式后Nginx代理报404

    由于以前VUE采用hash模式: hash -- 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算) 比如:http://abc.example.com/abc/#/hello, ...

  4. nginx多层反向代理获取客户端真实ip

    访问路径: 用户 --> www.chinasoft.cn(nginx反向代理) --> www.chinasoft.com(nginx反向代理) --> python服务端程序经过 ...

  5. Nginx代理webSocket时60s自动断开, 怎么保持长连接

    利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开,如下图: 为了保持长连接,可以采取来两种方式. 1.nginx.conf 文 ...

  6. ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS

    前言 spring mvc 5.2.9.RELEASE springboot 2.3.4.RELEASE ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTT ...

  7. nginx 反向代理时丢失端口的解决方案(转)

    nginx 反向代理时丢失端口的解决方案(转) 参考文章: (1)nginx 反向代理时丢失端口的解决方案(转) (2)https://www.cnblogs.com/shenyixin/p/1136 ...

  8. 通过nginx代理vue,vue再访问后端时出错记录

    项目场景: 项目场景:项目上线测试环境 使用nginx代理出现问题 问题描述 通过nginx代理vue,vue再访问后端时,后端地址被替换成为了代理地址 例如 : 代理地址为 127.0.0.1:80 ...

  9. 解决 nginx 反向代理时 session 丢失 无效的问题

    解决 nginx 反向代理时 session 丢失 无效的问题 原文 blog.csdn.net/joyous/article/details/79966593 因为原始路径和代理路径发生了变化,导致 ...

最新文章

  1. 查看“Active Directory 架构”
  2. 中国力量占领KDD:包揽“大数据领域世界杯”全部冠亚军,北航拿下最佳学生论文奖...
  3. 将两个DataFrame拼接起来,除了concat还有append()
  4. 【Python】值得推荐的12个jupyter lab插件
  5. 计算机网络传输层和应用层作业,计算机网络传输层作业.doc
  6. 代理模式详解(静态代理和动态代理的区别以及联系)
  7. 通过NAT转发实现私网对外发布信息
  8. Java学习第1天:序言,基础及配置tomcat
  9. 【转】反射,DataRow转换为实体类(优化)
  10. 【Java】javaWeb中的三大组件与八大监听器
  11. 浅谈矩阵分解在推荐系统中的应用
  12. 写python的笔记本_python笔记本:更改写入的fi
  13. vivado中交织模块_Adalm Pluto SDR主动学习模块让您拥有完善的无线电RF射频实验室...
  14. find和chmod结合来修改权限
  15. WordPress中导入图片模糊
  16. super-csv文档的部分翻译及基本使用
  17. java wildcard_java泛型 wildcard
  18. 真神奇!敲击桌子就能操控iPad或iPhone
  19. Weston 纹理倒置(render-gl)
  20. 关于java.util.concurrent.RejectedExecutionException: event executor terminated

热门文章

  1. 捧起同声传译圣杯的AI:向人类偷师、与人类共事
  2. orcal四舍五入函数及取整数
  3. Nordic DFU更新bootloader步骤
  4. Sqlserver给表名和列名添加注释
  5. linux 安装postgresql教程
  6. vue身份证正则校验
  7. 包装类概述、装箱与拆箱
  8. drawstring 文本居中_从Graphics.DrawString()居中输出文本 -问答-阿里云开发者社区-阿里云...
  9. html快速添加物料信息,http://800015671.114.qq.com/ndetail_324.html 2 物料、备品的计划请领单及供船情况;'...
  10. 【毕业季】走一步看一步?一个自动化er对大学四年的思考