# MQ-Proxy **Repository Path**: su-qiu/MQ-Proxy ## Basic Information - **Project Name**: MQ-Proxy - **Description**: 使用rabiitmq或rocketmq实现请求代理,内网穿透 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-25 - **Last Updated**: 2025-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: RabbitMQ, rocketmq, Java, 内网穿透, 请求代理 ## README # MQ-Proxy #### 介绍 使用rabiitmq或rocketmq实现http请求代理,内网穿透 #### 背景 服务器A为内网可访问,服务器B为内外网均可访问,服务器C为公网可访问 现需要通过服务器C访问服务器A #### 软件架构 ![img.png](img.png) 1. proxy-server用来接受外部请求并将请求封装成mq消息发送给mq服务器 2. proxy-client监听mq消息并解析,根据配置的真实服务ip与port发起请求 3. proxy-client将真实服务返回的响应封装成mq消息发送给mq服务器 4. proxy-server监听mq消息并解析,将响应返回给调用方 #### 前提 1. proxy-server一般部署在公网服务器,proxy-client部署在内网服务器(既能访问到真实服务,又能访问到mq) 2. proxy-server,proxy-client必须都能够访问到mq服务器 #### 部分启动参数说明(其它参数则是springboot/rabbitmq/rocketmq等默认参数,详见目录下使用文档) | 参数名 | 说明 | |----------------|--------------------| | netty.port | 默认9999 用于接收外部请求的端口 | | proxy.protocol | 代理协议 http或https | | proxy.host | 代理地址 | | proxy.port | 代理端口 | #### 启动示例 1. 两个模块都是根据 spring.profiles.active 参数来指定使用 rabbitmq 还是 rocketmq 2. 启动proxy-server(rabbitmq) ``` nohup java -jar proxy-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=rabbitmq --netty.port=9999 --spring.rabbitmq.host=127.0.0.1 --spring.rabbitmq.port=5672 --spring.rabbitmq.username=root --spring. rabbitmq.password=123456 --spring.rabbitmq.virtual-host=/ & ``` 3. 启动proxy-client(rabbitmq) ``` nohup java -jar proxy-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=rabbitmq --proxy.protocol=http --proxy.host=127.0.0.1 --proxy.port=8080 --spring.rabbitmq.host=127.0.0.1 --spring.rabbitmq.port=5672 --spring.rabbitmq.username=root --spring.rabbitmq.password=123456 --spring.rabbitmq.virtual-host=/ & ``` #### 请求 假设 proxy-server 部署在 192.168.0.1 且监听端口为 9999 proxy-client 部署在 192.168.0.2,代理地址为 192.168.0.3 代理端口 8080 通过访问 http://192.168.0.1:9999 直接可以请求到 http://192.168.0.3:8080 服务地址