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

相关推荐
Bruce_Liuxiaowei10 小时前
轻量级 IOC 管理方案:Streamlit 驱动的恶意IP情报平台
网络·jvm·网络协议·tcp/ip·安全
☆凡尘清心☆14 小时前
CentOS Stream 9 专用 LNMP 全自动一键脚本
linux·运维·mysql·nginx·lnmp·centos stream 9
Ivan CloudBay18 小时前
CDN 能完全隐藏源服务器 IP 吗?
运维·服务器·tcp/ip
雾里0不看花19 小时前
.NET通过HTTP操作MINIO
http·.net·iphone
funnycoffee12320 小时前
Cisco ip access-list序号重排方法
linux·网络·tcp/ip
乌萨奇也要立志学C++20 小时前
【Linux】传输层协议UDP与TCP详解
linux·tcp/ip·udp
AI人工智能+电脑小能手20 小时前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
不在逃避q21 小时前
使用.NET实现自带思考的Tool 并且提供mcp streamable http服务
网络协议·http·.net
一条泥憨鱼1 天前
【从0开始学习计算机网络】| HTTP方法疑点解析
开发语言·计算机网络·http
一条泥憨鱼1 天前
【从0开始学习计算机网络】| RESTful API 设计原则
计算机网络·http·restful api