使用 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 配置文件

  • streamhttp 区域同级即可。
[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 实现四层代理配置的主要内容,如果未能解决你的问题,请参考以下文章

nginx四层代理

Nginx 配置TCP代理

Nginx四层代理配置负载均衡和动静分离

4-1-面试必备-nginx实现反向代理配置与实战

Nginx 四层代理之动静分离与负载均衡

Nginx四层代理