nginx同时配置多组tcp反向代理和多组http反向代理

目录

需求背景:

问题分析:

[步骤一 如何配置一组tcp反向代理](#步骤一 如何配置一组tcp反向代理)

[步骤一 如何配置一组http反向代理](#步骤一 如何配置一组http反向代理)

步骤一如何同时配置一组tcp反向代理和一组http反向代理

步骤二、如何同时配置两组tcp反向代理和两组http反向代理

步骤三、如何同时配置多组tcp反向代理和多组http反向代理

总结:


需求背景:

nginx配置多组tcp反向代理和http反向代理,同时满足下面两个要求:

要求1:配置两组tcp反向代理组:

tcp组1:后端服务器ip为172.25.0.69和172.25.0.70,upstream端口为1088,监听端口为10188,tcp组2:后端服务器ip为172.26.0.79和172.26.0.80,upstream端口为1099,监听端口为10199;

要求2:配置两组http反向代理组:

http组1:后端服务器ip为172.26.0.89和172.26.0.90,upstream端口为3088,监听端口为4088,http组2:后端服务器ip为172.27.0.29和172.27.0.30,upstream端口为5088,监听端口为6088

问题分析:

上面只是以两组为例,如果更多组呢,如何配置起来更加灵活呢

使用nginx同时配置多组tcp反向代理和多组http反向代理,直接配置并不明朗,一步步配置就越来越清晰,如果到最终解决方式,可以直接跳到最后看结果,问题拆解:

1、如何配置一组tcp反向代理,如何配置一组http反向代理,

2、如何配置两组tcp反向代理,如何配置两组http反向代理

3、如何配置多组tcp反向代理,如何配置多组http反向代理

分三步,六个问题的解决来实现

步骤一 如何配置一组tcp反向代理

stream {

upstream tcp_group1 {

server 172.25.0.69:1088;

server 172.25.0.70:1088;

}

server {

listen 10188;

proxy_pass tcp_group1;

}

}

http {

}

验证结果:

步骤一 如何配置一组http反向代理

http {

upstream http_group1 {

server 172.26.0.89:3088;

server 172.26.0.90:3088;

}

server {

listen 4088;

location / {

proxy_pass http://http_group1;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

验证结果:

步骤一如何同时配置一组tcp反向代理和一组http反向代理

将步骤一的一组tcp配置组和一组http配置组放一块就可以同时实现配置一组tcp反向代理和一组http反向代理

for tcp

stream {

upstream tcp_group1 {

server 172.25.0.69:1088;

server 172.25.0.70:1088;

}

server {

listen 10188;

proxy_pass tcp_group1;

}

}

for http

http {

upstream http_group1 {

server 172.26.0.89:3088;

server 172.26.0.90:3088;

}

server {

listen 4088;

location / {

proxy_pass http://http_group1;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

验证结果:

了解了单独一组tcp反向代理和一组http反向代理之后,我们就直接配置同时实现两组tcp反向代理和两组http反向代理的实现

步骤二、如何同时配置两组tcp反向代理和两组http反向代理

for tcp

stream {

upstream tcp_group1 {

server 172.25.0.69:1088;

server 172.25.0.70:1088;

}

server {

listen 10188;

proxy_pass tcp_group1;

}

upstream tcp_group2 {

server 172.26.0.79:1099;

server 172.26.0.80:1099;

}

server {

listen 10199;

proxy_pass tcp_group2;

}

}

for http

http {

upstream http_group1 {

server 172.26.0.89:3088;

server 172.26.0.90:3088;

}

server {

listen 4088;

location / {

proxy_pass http://http_group1;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

upstream http_group2 {

server 172.27.0.29:5088;

server 172.27.0.30:5088;

}

server {

listen 6088;

location / {

proxy_pass http://http_group2;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

验证结果:

步骤三、如何同时配置多组tcp反向代理和多组http反向代理

实现同时多组的话,你也可以仿照图中的红框做为一个配置单元,一个个地往nginx.conf添加,但是这样对于每一个tcp反向代理或者http反向代理的增删改,可能比较棘手些,尤其是想通过web前端来实现nginx的反向代理的配置的时候,这样对单个反向代理的操作不够灵活,可扩展性差,如何比较灵活地实现反向代理的增删改查呢

这个时候每一个反向代理的配置放到一个文件里,然后用include命令来包含加载就方便需要,修改的时候只修改对应反向代理的配置文件,删除的时候直接删除该文件即可

worker_rlimit_nofile 65535;

events {

worker_connections 65535;

}

for tcp

stream {

include tcp.d/*.conf;

}

for http

http {

include http.d/*.conf;

}

将tcp_group1.conf位置和内容如图,放到了tcp.d里,这样include tcp.d/*.conf就可以加载tcp组1的反向代理,同理,tcp_group2.conf,http_group1.conf,http_group2.conf放在http.d目录下,之后操作对应的文件就可以实现对应反向代理的更细的配置,如果想取消对应的反向代理,删除目录下对应名字文件即可

总结:

问题的解决主要是注意nginx命令,如upstream和stream的适用配置块,还有include命令的使用,使nginx的配置更加模块化,更加灵活

相关推荐
开源技术9 小时前
DNS详解——域名是如何解析的
http
larance14 小时前
Gunicorn + Nginx+systemd 配置flask
nginx·flask·gunicorn
文艺理科生Owen15 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx
三水不滴15 小时前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
天荒地老笑话么18 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
BLSxiaopanlaile19 小时前
《凤凰架构-构建可靠的大型分布式系统》读书笔记 -关于网络通信安全性的一些总结
http·加密·认证授权·网络通信安全
..过云雨20 小时前
多路转接select系统调用详解
网络·网络协议·tcp/ip
强风79421 小时前
Linux-传输层协议TCP
linux·网络·tcp/ip
科技块儿21 小时前
如何选择合适的IP查询工具?精准度与更新频率全面分析
网络·tcp/ip·安全
Zach_yuan21 小时前
传输层之TCP/UDP 核心原理全解析:从协议基础到实战机制
linux·网络协议·tcp/ip·udp