Nginx支持四层代理

http://nginx.org/en/docs/stream/ngx_stream_core_module.html

ngx_stream_core_module模块自1.9.0版开始可用。默认情况下,此模块不构建,应使用配置参数启用 --with-stream 。

[root@linux-node1 src]# tar xf nginx-1.10.3.tar.gz
[root@linux-node1 src]# cd nginx-1.10.3
[root@linux-node1 nginx-1.10.3]# useradd -s /sbin/nologin -M www
[root@linux-node1 nginx-1.10.3]# yum install gcc gcc-c++ zlib-devel pcre-devel openssl openssl-devel -y
[root@linux-node1 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx-1.10.3 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-stream
[root@linux-node1 nginx-1.10.3]# make && make install 配置文件
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream tcp_proxy {
hash $remote_addr consistent; #远程地址做个hash
server 192.168.230:131:22;
}
server {
listen 2222;
proxy_connect_timeout 1s;
proxy_timeout 10s; #后端连接超时时间
proxy_pass tcp_proxy;
}
} [root@linux-node1 conf]# /usr/local/nginx-1.10.3/sbin/nginx [root@linux-node1 conf]# netstat -ntpl|grep 2222
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 12045/nginx: master [root@linux-node1 conf]# ssh -p 2222 root@192.168.230.130
root@192.168.230.130's password:
Last login: Sat Apr 8 22:32:14 2017 from linux-node1
[root@linux-node2 ~]# ls
anaconda-ks.cfg hello.py

#############################################################3

nginx使用ngx_stream_core_module模块代理tcp长连接短连接,可以增强服务器的容灾能力

下面是一个配置信息,自己也方便记录一下

#########################################################

KeepAlive

这里的keepalive是TCP的探活机制:

[root@ ~]# sysctl -a  |grep tcp_keepalive
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75

参数解释:

  • tcp_keepalive_time 1200 ,tcp建立链接后1200 秒如果无数据传输,则会发出探活数据包
  • tcp_keepalive_probes 9 , 共发送9次
  • tcp_keepalive_intvl 75 ,每次间隔75秒

KeepAlive并不是默认开启的,在Linux系统上没有一个全局的选项去开启TCP的KeepAlive。需要开启KeepAlive的应用必须在TCP的socket中单独开启。

TCP socket也有三个选项和内核对应,通过setsockopt系统调用针对单独的socket进行设置:

  • TCPKEEPCNT: 覆盖 tcpkeepaliveprobes
  • TCPKEEPIDLE: 覆盖 tcpkeepalivetime
  • TCPKEEPINTVL: 覆盖 tcpkeepalive_intvl

Nginx

server {
listen 127.0.0.1:3306 so_keepalive=on;
proxy_pass 172.17.0.3:3306; #建立连接时间
proxy_connect_timeout 5s;
#保持连接时间
proxy_timeout 3600s;
error_log /data/logs/my.log info;

so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

  • on: 开启,探测参数更加系统默认值
  • off: 关闭
  • keepidle: 等待时间
  • keepintvl: 发送探测报文间隔
  • keepcent: 探测报文发送次数

proxy_timeout:建连后无数据时与后端服务器连接保持时间,默认75s。

proxy_connect_timeout:与后端服务器建立连接的超时, 不超过75s。

proxy_send_timeout:向后端服务器组发出write请求后,等待响应的超时间,默认为60秒。

proxy_read_timeout:向后端服务器组发出read请求后,等待响应的超时间,默认为60秒。

学习Nginx(二)的更多相关文章

  1. CentOS 7 学习(二) 配置Nginx反向代理

    CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...

  2. zuul进阶学习(二)

    1. zuul进阶学习(二) 1.1. zuul对接apollo 1.1.1. Netflix Archaius 1.1.2. 定期拉 1.2. zuul生产管理实践 1.2.1. zuul网关参考部 ...

  3. Docker学习(二): 镜像的使用与构建

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  4. 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用

    目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...

  5. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

  6. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  7. Android Animation学习(二) ApiDemos解析:基本Animators使用

    Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...

  8. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  9. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  10. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

随机推荐

  1. 【C#反射】Assembly

    Assembly属性的应用 //获取当前执行代码的程序集 Assembly assem = Assembly.GetExecutingAssembly(); Console.WriteLine($&q ...

  2. Bagging与随机森林

    Bagging Bagging是并行式集成学习算法最著名的代表,基于自助采样法(bootstrap sampling). 给定m个样本的数据集,选取m次,每次选1个样本,构成一个新的样本集,其中有的样 ...

  3. 基于angularJs坐标转换指令(经纬度中的度分秒转化为小数形式 )

    最近项目中,需要用户输入经纬度信息,因为数据库设计的时候,不可能分三个字段来存储这种信息,只能用double类型来进行存储. 计算公式  double r=度+分/60+秒/3600 <!DOC ...

  4. FTP常见命令详解

    转至:https://blog.csdn.net/qq_38526635/article/details/82147980 在window下按window + r可打开DOS命令窗口,然后就可以输入F ...

  5. 列表视图ListView

    依然是一个listView的Java文件 1 public class ListViewActivity extends Activity { 2 private ListView lv1; 3 @O ...

  6. 文件上传漏洞之MIME类型过滤

    上传的时候修改Content-Type为image/jpeg等程序指定的类型即可. 修改为: 使用蚁剑连接测试

  7. table表格的td行利用css显示...

      默认超过指定长度以...显示, 鼠标放到文本上显示全 代码如下 .fh{ max-width:220px; word-wrap:break-word; text-overflow:ellipsis ...

  8. java方法学习

    java方法学习 方法概念 什么是方法 方法就是完成某些事情的过程,如:实现两个数相加,用方法add(数值1,数值2). 1.System.out.print(),System是系统的一个类,out是 ...

  9. 七天接手react项目 —— state&事件处理&ref

    state&事件处理&ref 在 react 起步 一文中,我们学习了 react 相关知识:jsx.组件.props.本篇将继续研究 state.事件处理和ref. state St ...

  10. LGP6694题解

    第一眼似乎很困难,实际上非常简单( 好吧这题我做了一个小时( 首先期望具有线性性,我们转化为计算点对对答案的贡献. 发现相对位置一样的点对对答案的贡献是一样的.我们把相对位置一样的点对铃出来,乘了之后 ...