使用 Nginx 实现四层代理配置
Posted 愿许浪尽天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Nginx 实现四层代理配置相关的知识,希望对你有一定的参考价值。
一、基本介绍
平时我们在配置 nginx 代理时,一般配置的都是基于 http
或是 https
协议的代理,也就是应用层。但是有些时候,我们并不想配置这种基于应用层的代理。比如说:我们要代理到数据库上,但是数据库是不支持应用层代理的。
所以,我们并不能像平常那样来配置,不过呢,在 Nginx 1.9.0 版本后,Nginx 便可以通过配置 --with-stream
模块的方式,来实现基于四层的反向代理。因此,我们便可以通过端口代理到端口的方式来访问到数据库。
上面我们只是打个比方,其实我们是可以通过四层代理,来代理到任何使用到四层协议的服务上,而不仅仅是数据库。
二、使用 Nginx 实现四层代理配置
1.安装 Nginx
[root@Nginx ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
[root@Nginx ~]# ls
anaconda-ks.cfg nginx-1.21.0.tar.gz
[root@Nginx ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
[root@Nginx ~]# cd /usr/src/nginx-1.21.0/
[root@Nginx nginx-1.21.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx nginx-1.21.0]# ./configure \\
--prefix=/usr/local/nginx \\
--user=nginx \\
--group=nginx \\
--with-file-aio \\
--with-http_stub_status_module \\
--with-http_gzip_static_module \\
--with-http_flv_module \\
--with-http_ssl_module \\
--with-stream \\
--with-pcre && make && make install
[root@Nginx nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@Nginx nginx-1.21.0]# cd
[root@Nginx ~]# nginx
[root@Nginx ~]# netstat -anpt | grep 80
2.修改 Nginx 配置文件
stream
和http
区域同级即可。
[root@Nginx ~]# cat <<END >> /usr/local/nginx/conf/nginx.conf
stream
upstream test_mysql
hash $remote_addr consistent; # 通过配置一致性 hash 来防止调度异常
server 192.168.1.1:3306 weight=5 max_fails=3 fail_timeout=30s;
server
listen 10086 so_keepalive=on; # 开启 TCP 存活探测
proxy_connect_timeout 10s; # 连接超时时间
proxy_timeout 300s; # 端口保持时间
proxy_pass test_mysql;
END
[root@Nginx ~]# nginx -s reload
3.验证
1)安装 MariaDB
数据库
[root@Nginx ~]# yum -y install mariadb mariadb-server mariadb-libs mariadb-devel
[root@Nginx ~]# systemctl start mariadb
[root@Nginx ~]# mysqladmin -uroot password '123123'
2)验证
以上是关于使用 Nginx 实现四层代理配置的主要内容,如果未能解决你的问题,请参考以下文章