@@ -19,10 +19,14 @@ MemShellParty 是一款可本地部署的一键生成常见中间件框架内存
1919
2020MemShellParty 出现的原因有以下几个:
2121
22- 1 . 工作中有时候客户会有个别中间件的内存马测试需求,这个时候临时写一个太慢又太烦,在不忙的时候做一个工具,有需求就生成一个多好(之前用 [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
22+ 1 .
23+
24+ 工作中有时候客户会有个别中间件的内存马测试需求,这个时候临时写一个太慢又太烦,在不忙的时候做一个工具,有需求就生成一个多好(之前用 [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
2325生成一个 WAS 的内存马不能用,调了半天修好了)。
26+
24272 . 写 [ Javassist] ( https://www.javassist.org/ ) 实在是太多了,字符串拼接的方式去弄方法 code
25- 实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [ Byte Buddy] ( https://bytebuddy.net/ ) ,高封装提供的
28+ 实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [ Byte Buddy] ( https://bytebuddy.net/ )
29+ ,高封装提供的
2630 API 很好用的。单个利用脚本的话确实 [ Javassist] ( https://www.javassist.org/ ) 来得快,而且很多中间件也自带依赖直接能打。
27313 . [ Java Memshell Generator] ( https://github.com/pen4uin/java-memshell-generator )
2832 的出现确实帮大忙了,但是其极少的交互逻辑对于一个应用来说是难以接受的,刚好学习了前端对 UX 也感兴趣(对 Desktop
@@ -82,13 +86,13 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party ghcr.nju
8286# 移除之前部署的
8387docker rm -f memshell-party
8488
85- # 使用之前的部署命令,重新部署 (会自动拉取最新的镜像部署)
89+ # 使用之前的部署命令重新部署 (会自动拉取最新的镜像部署)
8690docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
8791```
8892
89- ### 本地构建部署
93+ ### 本地构建
9094
91- > 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以使用
95+ > 适合想编写代码的小伙伴,使用 Git Clone 下载到本地,并构建前后端项目以供使用
9296
9397首先需要下载 [ bun] ( https://bun.sh/ ) ,这是一款用于构建前端服务工具。
9498
@@ -133,6 +137,58 @@ docker buildx build -t memshell-party:latest . --load
133137docker run -it -d --name memshell-party -p 8080:8080 memshell-party:latest
134138```
135139
140+ ### Dockerfile 一键构建
141+
142+ > 适合于希望构建自定义访问路径的小伙伴,例如 NGINX 反代的场景([ #44 ] ( https://github.com/ReaJason/MemShellParty/issues/44 ) )
143+
144+ 下载项目根目录的 [ Dockerfile] ( ./Dockerfile )
145+
146+ - VERSION: 版本信息,随意,建议用最新的 tag 号,仅作前端展示
147+ - ROUTE_ROOT_PATH: 前端根路由配置
148+ - CONTEXT_PATH: 后端访问前缀
149+
150+ ``` bash
151+ # 基础构建
152+ docker buildx build \
153+ --build-arg VERSION=1.3.1 \
154+ -t memshell-party:latest . --load
155+
156+ # 基础镜像启动,访问 127.0.0.1:8080
157+ docker run -it -d -p 8080:8080 memshell-party:latest
158+
159+ # 自定义访问路径构建
160+ docker buildx build \
161+ --build-arg VERSION=1.3.1 \
162+ --build-arg ROUTE_ROOT_PATH=/memshell-party \
163+ --build-arg CONTEXT_PATH=/memshell-party \
164+ -t memshell-party:latest . --load
165+
166+ # 自定义路径构建镜像启动,访问 127.0.0.1:8080/memshell-party
167+ docker run -it -p 8080:8080 \
168+ -e BOOT_OPTS=--server.servlet.context-path=/memshell-party \
169+ memshell-party:latest
170+ ```
171+
172+ 如果需要使用 NGINX 反代,请先使用自定义访问路径构建容器,并配置 NGINX 如下:
173+
174+ 其中 ` location /memshell-party ` 、` ROUTE_ROOT_PATH=/memshell-party ` 、` CONTEXT_PATH=/memshell-party ` 和 ` BOOT_OPTS=--server.servlet.context-path=/memshell-party ` 都要一致才行。
175+
176+ ``` text
177+ location /memshell-party {
178+ proxy_pass http://127.0.0.1:8080;
179+ proxy_set_header Host $http_host;
180+ proxy_set_header X-Forwarded-By $server_addr:$server_port;
181+ proxy_set_header X-Forwarded-For $remote_addr;
182+ proxy_http_version 1.1;
183+ proxy_connect_timeout 3s;
184+ proxy_read_timeout 300s;
185+ proxy_send_timeout 300s;
186+ proxy_buffer_size 16k;
187+ proxy_buffers 8 64k;
188+ proxy_busy_buffers_size 128k;
189+ }
190+ ```
191+
136192## 适配情况
137193
138194已兼容 Java6 ~ Java8、Java9、Java11、Java17、Java21
0 commit comments