nginx简介

nginx是一个高效开源的代理转发组件,目前其应用领域已经非常广泛。尤其是其高效的实现消息的负载均衡功能受到众多企业的青睐。但是截至目前为止,其只能实现tcp的负载均衡,对于udp的负载均衡其无法使用upstream的check模块,进而无法监听转发端的存活性,从而导致即使有一个转发端down掉,nginx依旧会将信息转发给它,需要安装nginx-plus才能使用upstream的check模块,具体可在官网查看。

关于nginx的简单使用可查看我的另一篇博客《nginx的简单反向代理配置》。


但是这里我们不是要讨论如何去破解nginx-plus,而是讨论如何通过我们的方式使nginx可以使用upstreamcheck模块。

部署开源版nginx

由于nginx属于开源组件(nginx-plus例外),很多技术大牛就会对nginx进行修改,以实现自己的个性化需求,在github找到一个开源版,其能够实现udp的负载均衡,具体可以点击这里查看详情。

可在上面下载对应最新的源码进行安装,如果国内网速比较慢,可以点击这里直接下载(版本不一定最新,但是亲测可用)。

将其解压并上传到部署服务器。
在这里插入图片描述
到部署服务器上,需要安装对应的依赖包,可执行

yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel git

自动下载安装。

配置nginx前需要检查selinux是否关闭

输入getenforce命令可以查看selinux是否关闭,如果显示disabled或者permissive表示已经关闭,如果显示`enforcing’则表示没有关闭,需要手动打开。

# getenforce
Enforcing
临时关闭selinux
setenforce 0    ##设置SELinux 成为permissive模式
setenforce 1    ##设置SELinux 成为enforcing模式
永久关闭selinux

修改/etc/selinux/config 文件
SELINUX=enforcing改为SELINUX=disabled
然后重启系统

安装nginx

使用以下命令安装nginx

# tar -zxvf nginx.tar.gz 
# tar -zxvf ngx_healthcheck_module.tar.gz 
# cd nginx
# git checkout branches/stable-1.12
# git apply ../ngx_healthcheck_module/nginx_healthcheck_for_nginx_1.12+.patch
# ./auto/configure --with-stream --add-module=../ngx_healthcheck_module/
# make && make install

安装完成后需要配置nginx

# cd /usr/local/nginx/conf
# 备份原生配置文件
# mv nginx.conf nginx.conf.bk
# 新建配置文件
# vim nginx.conf

将以下内容写入nginx.conf

user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

stream {
    upstream udp-cluster {
        # simple round-robin
        server 192.168.211.21:514;
        server 192.168.211.30:514;
        check interval=10000 rise=2 fall=3 timeout=2000 default_down=false type=udp;
    }
    server {
                listen 514 udp;
                proxy_pass udp-cluster;
                proxy_bind $remote_addr transparent;
                proxy_timeout 0s;
        }
}

将里面upstream模块里的ip换位你自己要转发的ip即可。
接下来创建nginx的日志目录并启动nginx即可。

# mkdir /var/log/nginx
# cd /usr/local/nginx/sbin
# ./nginx 
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐