• 编译nginx平滑添加stream模块


    https://www.cnblogs.com/crysmile/p/9565048.html

    --很好

    1、操作背景

    操作系统版本:CentOS Linux release 7.4.1708 (Core)
    nginx版本:1.13.4

    nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理。

    2、nginx编译添加stream模块

    2.1、查看原nginx编译参数

    [root@test-server sbin]# nginx -V
    nginx version: nginx/1.13.4
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/usr/local/src/pcre-8.41

    2.2、添加stream模块进行重新编译

    1
    2
    3
    4
    此处nginx源码目录为:/usr/local/src/nginx-1.13.4,即为编译命令执行目录。
     
    编译命令如下:
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/usr/local/src/pcre-8.41 --with-stream

    2.3、进行make操作

    此处nginx源码目录为:/usr/local/src/nginx-1.13.4,即为编译命令执行目录。
    make
    
    此处一定不能使用make install命令,执行该命令会将原有nginx目录进行覆盖。

    3、关停nginx同时复制新的nginx启动文件

    1
    2
    3
    4
    5
    6
    7
    8
    关闭nginx服务
    systemctl stop nginx
     
    备份原有nginx二进制文件。
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-no-strem
     
    复制新编译好的nginx二进制文件。从此处nginx源码目录为:/usr/local/nginx-1.13.4。即为编译命令执行目录。
    cp ./objs/nginx /usr/local/nginx/sbin/nginx

    4、启动测试 

    复制代码
    启动nginx。
    systemctl start nginx
    
    查看nginx模块信息。
    nginx -V
    nginx version: nginx/1.13.4
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/usr/local/src/pcre-8.41 --with-stream
    
    可以看到stream模块已经编译到nginx内了。
    复制代码

    5、nginx stream模块配置简析

    复制代码
    stream段的配置要与http段在同级目录。此处引用的为官方nginx说明配置。
    stream { upstream backend { hash $remote_addr consistent; server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; } upstream dns { server 192.168.0.1:53535; server dns.example.com:53; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend; } server { listen 127.0.0.1:53 udp reuseport; proxy_timeout 20s; proxy_pass dns; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; } }
    复制代码

    举一个栗子,利用stream模块代理 zk服务的2181端口。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    stream {
        upstream zk_server {
            server 172.16.3.8:2181 weight=5;
        }
        server {
            listen 2181 tcp;
            proxy_responses 1;
            proxy_timeout 20s;
            proxy_pass zk_server;
        }
    }

    6、编译nignx systemd服务启动文件

    复制代码
    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    复制代码
  • 相关阅读:
    MySQL binlog中 format_desc event格式解析
    位bit和字节Byte
    MySQL利用mysqlbinlog模拟增量恢复
    mysqldump参数 --master-data详解
    开启MySQL二进制日志
    设置花里胡哨的Xshell字体与背景颜色(超全)
    Python操作MySQL数据库
    给定一个由括号([{)]}其中之一或多个组成的字符串判断是否符合左右括号成对标准,不同括号可任意嵌套
    给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
    不使用局部变量和for循环或其它循环打印出如m=19,n=2結果为2 4 8 16 16 8 4 2形式的串
  • 原文地址:https://www.cnblogs.com/zhoading/p/14784872.html
Copyright © 2020-2023  润新知