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的配置更加模块化,更加灵活

相关推荐
低头不见37 分钟前
tcp的粘包拆包问题,如何解决?
网络·网络协议·tcp/ip
沫夕残雪7 小时前
HTTP,请求响应报头,以及抓包工具的讨论
网络·vscode·网络协议·http
viqecel7 小时前
网站改版html页面 NGINX 借用伪静态和PHP脚本 实现301重定向跳转
nginx·php·nginx重定向·301重定向·html页面重定向
古希腊掌握嵌入式的神10 小时前
[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议
网络·物联网·网络协议·tcp/ip·udp
硪就是硪11 小时前
内网环境将nginx的http改完https访问
nginx·http·https
鹅肝手握高V五色12 小时前
Wireshark入门教程:如何抓取和过滤网络数据包
websocket·网络协议·tcp/ip·http·网络安全·https·udp
老六ip加速器12 小时前
如何改电脑网络ip地址:一步步指导
网络·网络协议·tcp/ip
ak啊12 小时前
Nginx 安全加固详细配置指南
nginx
旧味清欢|13 小时前
关注分离(Separation of Concerns)在前端开发中的实践演进:从 XMLHttpRequest 到 Fetch API
javascript·http·es6
网络抓包与爬虫15 小时前
Wireshark——抓包分析
websocket·网络协议·tcp/ip·http·网络安全·https·udp