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

相关推荐
枷锁—sha15 分钟前
【BUUCTF系列】[极客大挑战 2019]Http 1
网络·网络协议·http
求知若渴,虚心若愚。16 分钟前
高可用实战之Nginx + Apache篇
运维·nginx·apache
Running_C16 分钟前
一文读懂跨域
前端·http·面试
gAlAxy...21 分钟前
HTTP 请求转发与重定向详解及其应用(含 Java 示例)
网络·网络协议·http
菜菜子爱学习1 小时前
Nginx学习笔记(七)——Nginx负载均衡
笔记·学习·nginx·负载均衡·运维开发
cccc来财3 小时前
TCP的流量控制和拥塞控制
服务器·网络·tcp/ip
居7然8 小时前
MCP协议更新:从HTTP+SSE到Streamable HTTP,大模型通信的进化之路
网络·网络协议·http
xiikzi17 小时前
UDP和TCP协议
网络·tcp/ip·udp
wang090719 小时前
网络协议之TCP和UDP
网络协议·tcp/ip·udp
小白爱电脑20 小时前
Wireshark专家模式定位网络故障:14种TCP异常深度解剖
网络·tcp/ip·wireshark