zoukankan      html  css  js  c++  java
  • 学习Nginx(二)

    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秒。

  • 相关阅读:
    [ActionScript 3.0] AS3.0将图像的Alpha通道转换为黑白图像(复制通道方式)
    [ActionScript 3.0] 喷泉效果
    [ActionScript 3.0] AS3.0 下雨及涟漪效果
    [ActionScript 3.0] AS3.0 复制xml,并赋值
    [ActionScript 3.0] AS3.0 火焰效果
    [ActionScript 3.0] AS3.0 烟雾粒子效果
    Java学习之==>面向对象编程 Part1
    Java学习之==>int和Integer的区别和联系
    Java学习之==>数组【array】
    Java学习之==>条件判断、循环控制
  • 原文地址:https://www.cnblogs.com/wuhg/p/11472554.html
Copyright © 2011-2022 走看看