LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Nginx 反向代理(三):四层代理和负载均衡

admin
2025年6月29日 18:36 本文热度 48

4 Nginx 反向代理

4.6 Nginx 的四层代理和负载均衡

Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置方式和指令和http 代理类似,其基于ngx_stream_proxy_module模块实现tcp负载,另外基于模块ngx_stream_upstream_module实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能

如果编译安装,需要指定 --with-stream 选项才能支持ngx_stream_proxy_module模块

http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html # 非http协议的反向代理https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html # 非http协议的负载均衡
4.6.2 实现TCP协议的反向代理

角色 
IP
Client 
10.0.0.208
Proxy Server 
10.0.0.206
Mysql Server 
10.0.0.210
Redis Server 
10.0.0.159

#10.0.0.206 Proxy Server 配置,此配置要写在最外层stream {  server {    listen 3306;    proxy_pass 10.0.0.210:3306;  }
  server {    listen 6379;    proxy_pass 10.0.0.159:6379;  }}
#10.0.0.210 安装mysql-server,并配置远程用户[root@ubuntu ~]# apt update;apt install mysql-servermysql> create user proxyer@'10.0.0.%' identified by '123456';Query OK0 rows affected (0.01 sec)mysql> flush privileges;Query OK0 rows affected (0.00 sec)
#当前mysql-server 只监听了本机的3306[root@ubuntu ~]# ss -tnlp | grep 3306LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users: (("mysqld",pid=2461,fd=21))LISTEN 0 151 127.0.0.1:3306 0.0.0.0:* users: (("mysqld",pid=2461,fd=23))
#修改配置,注释掉这两行[root@ubuntu ~]# vim /etc/mysql/mysql.conf.d/mysqld.cnf#bind-address = 127.0.0.1#mysqlx-bind-address = 127.0.0.1skip-name-resolve #添加此行,跳过主机名反解
#重启服务[root@ubuntu ~]# systemctl restart mysql.service[root@ubuntu ~]# ss -tnlp | grep 3306LISTEN 0 70 *:33060 *:* users: (("mysqld",pid=3928,fd=21))LISTEN 0 151 *:3306 *:* users: (("mysqld",pid=3928,fd=23))
#10.0.0.159 安装redis-server[root@ubuntu ~]# apt update;apt install redis-server
#当前只监听了127.1[root@ubuntu ~]# ss -tnlp | grep 6379LISTEN 0 511 127.0.0.1:6379 0.0.0.0:* users:(("redisserver",pid=2153,fd=6))LISTEN 0 511 [::1]:6379 [::]:* users:(("redisserver",pid=2153,fd=7))
#修改配置并重启[root@ubuntu ~]# vim /etc/redis/redis.conf#bind 127.0.0.1 ::1protected-mode no #关闭保护模式
[root@ubuntu ~]# systemctl restart redis-server.service[root@ubuntu ~]# ss -tnlp | grep 6379LISTEN 0 511 0.0.0.0:6379 0.0.0.0:* users:(("redisserver",pid=2480,fd=7))LISTEN 0 511 [::]:6379 [::]:* users:(("redisserver",pid=2480,fd=6))
#客户端配置,并测试[root@ubuntu ~]# apt update[root@ubuntu ~]# apt install mysql-client-8.0 redis
#直连测试[root@ubuntu ~]# mysql -h 10.0.0.210 -uproxyer -p'123456'
#在mysql 服务端查看,客户端直连mysql> show processlist\G*************************** 2. row ***************************Id: 9User: proxyerHost: 10.0.0.208:42714db: NULLCommand: SleepTime: 358State:Info: NULL
#redis 测试,客户端直连[root@ubuntu ~]# redis-cli -h 10.0.0.159
#服务端查看[root@ubuntu ~]# ss -tnep| grep 6379FIN-WAIT-2 0 0 10.0.0.159:6379 10.0.0.208:39838 timer: (timewait,43sec,0) ino:0 sk:1004
#代理测试[root@ubuntu ~]# mysql -h 10.0.0.206 -uproxyer -p'123456'
#是代理服务器在连mysql-servermysql> show processlist\G*************************** 1. row ***************************Id: 12User: proxyerHost: 10.0.0.206:49452db: NULLCommand: QueryTime: 0State: initInfo: show processlist1 row in set, 1 warning (0.00 sec)
#redis 测试[root@ubuntu ~]# redis-cli -h 10.0.0.20610.0.0.206:6379> keys *(empty array)10.0.0.206:6379> set test 123OK10.0.0.206:6379> keys *1) "test"
4.6.3 实现TCP协议的负载均衡
#10.0.0.206 Proxy Server 配置,此配置要写在最外层stream {  upstream mysql {    server 10.0.0.210:3306;    server 10.0.0.159:3306;  }
  upstream redis {    server 10.0.0.210:6379;    server 10.0.0.159:6379;  }
  server {    listen 3306;    proxy_pass mysql;  }
  server {    listen 6379;    proxy_pass redis;  }}

— END —


阅读原文:原文链接


该文章在 2025/7/1 23:14:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved