使用Nginx替代rinetd访问阿里云Redis

服务使用的阿里云的Redis,但是阿里云的Redis不提供公网地址,因此如果公司内网要访问Redis必然需要一个代理,阿里云官方文档使用的是rinetd,不过不得不说rinetd这个东西比较坑。访问多了或者时间长了就会使得CPU占用率非常高。然后发现redis连不上了,提示Connection reset by peer。
因此就要想办法替换掉rinetd。
以下是使用Nginx的部署方法。
Nginx从1.9之后的版本开始支持stream转发,但是发布的包默认是不支持此功能的,因此想要用上还需要自己编译。

1.先去nginx的官网下载代码,最新分支的地址是 http://hg.nginx.org/nginx, 一般想要编译稳定版,那么就要先在左侧选择branch分支,本教程选择是1.12版本,然后选择zip下载代码。

也可以省事用此地址直接下载:http://hg.nginx.org/nginx/archive/stable-1.12.zip。

2.本教程使用的是Centos7.4版本的系统,编译nginx之前当然要安装一下编译环境了。

yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel unzip

3.解压并编译安装

unzip stable-1.12.zip
cd stable-1.12
cp auto/configure .
./configure \
    --prefix=/etc/nginx                   \
    --sbin-path=/usr/sbin/nginx           \
    --conf-path=/etc/nginx/nginx.conf     \
    --pid-path=/var/run/nginx.pid         \
    --lock-path=/var/run/nginx.lock       \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-stream
make
make install

configure中最重要的就是--with-stream,加了这个编译选项才能支持stream转发。

4.nginx配置文件

worker_processes auto;
# error_log /var/log/nginx/error.log info; #上线之后如果不需要日志可以把他关了
events {
    worker_connections  1024;
}
stream {
    upstream redis {
        server *redis-addres*:6379 max_fails=3 fail_timeout=30s; #*redis-addres*替换为真是地址
    }
    server {
        listen 6379;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass redis;
    }
}

5.启动代理~
nginx -c 配置文件的绝对路径,到这里就大功告成了!!

PS:这下可以安心了,不用在烧香了~~

你可能感兴趣的:(使用Nginx替代rinetd访问阿里云Redis)