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. Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019

    Guided Anchoring通过在线生成anchor的方式解决常规手工预设anchor存在的问题,以及能够根据生成的anchor自适应特征,在嵌入方面提供了两种实施方法,是一个很完整的解决方案   ...

  2. MySQL查看数据库中所有表占用的空间大小

    select TABLE_NAME, concat(truncate(data_length/1024/1024,2),'MB') as data_size, concat(truncate(inde ...

  3. 【洛谷】P1447 能量采集

    此题虽为紫,但其实在水 能量采集 题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一 ...

  4. [2022-3-5] OICLASS-USACO提高组模拟赛2 B: Cow Frisbee

    题意 在一排奶牛中,对于每两头奶牛,如果两头奶牛之间没有奶牛比这两头高,则答案累加这两头奶牛的距离. 分析 设现在分析的奶牛为第 \(i\) 头,它向左扔出了一个飞盘,显然它的飞行高度为奶牛的高度.飞 ...

  5. 矩池云上安装ikatago及远程链接教程

    https://github.com/kinfkong/ikatago-resources/tree/master/dockerfiles 从作者的库中可以看到,该程序支持cuda9.2.cuda10 ...

  6. 【NLP】

  7. 能动的电脑配件「GitHub 热点速览 v.22.11」

    看到这个标题就知道硬核的 B 站 UP 主稚晖君又更新了,本次带来的是一个造型可爱的小机器人.除了稚晖君这个一贯硬核的软硬件项目之外,本周也有很多有意思的新项目,像 Linux 服务监控小工具 Ray ...

  8. 华为HCIA认证零基础入门-网络工程师必备之什么是静态路由?如何配置静态路由?

    一.静态路由功能介绍:静态路由就是手工配置的路由,使得数据包能够按照预定的路径传送到指定的目标网络. 当不能通过动态路由协议学到一些目标网络的路由时,配置静态路由就会显得十分重要. 二.静态路由应用场 ...

  9. think php 框架下拉分页

    //以对象的形式获取数据库$data变量的信息,将lastPage()传输至页面 $lastpage = $data->lastPage(); $this->assign('lastpag ...

  10. L2Dwidget二次元前端添加人物插件

    如果想要在博客园上添加这个插件,只需要在设置的"页首html代码"中添加下面的js就行 <!-- 右下角live2d效果 --> <script src=&quo ...