大家好,我是小米,一个 31 岁、还在一线写 Java 的工程师。
上周我去了一家中厂面试,面试官是个典型“见过世面”的老 Java。他一边翻简历一边笑着问我一句话:
“现在 Go、Rust、Node 这么多,你们为什么还在用 Java?”
“还有啊,Java 的 WebServer terminate SSL 这么慢,为什么大家还非要在前面加一层 Nginx?”
他问这两个问题的时候,语气很随意,但我心里“咯噔”一下。因为我知道,这不是在考语法,也不是在考 API,而是在考你是不是一个真正做过线上系统的人。
今天这篇文章,我不打算用“Java 很成熟”“生态很丰富”这种套话来糊你。我打算给你讲一个故事。
先讲个故事:一家越来越大的“火锅店”我们先把技术世界放一放。假设你在经营一家火锅店。
第一年
店面很小
老板就是你
切菜、煮锅、收钱你全干
这个阶段,用什么语言无所谓,用 Java、Go、Node 都能活。
第二年
生意好了。
客人多了
开始请服务员
后厨开始分工
你发现一个问题:老板什么都干,反而慢了。于是你开始“分层”。
前台只负责接待
后厨只负责做菜
收银专门收钱
现在,请把这家火锅店,映射到一个 Web 系统:

这,就是为什么我们要讲 Reverse Proxy。
为什么 2025 年了,还在用 Java?我们先回答第一个问题。面试官真正想听什么?他不是想听你说:
Java 稳定
Java 老牌
Java 生态好
这些话,他自己都能背。他真正想听的是:
Java 在“复杂系统”里,到底解决了什么问题?
Java 的核心优势,从来不是“快”我经常跟新人说一句话:
Java 的优势,从来不是跑得最快,而是“最不容易跑歪”。
你可以用一句话总结 Java 的定位:
Java 是一个为“长期运行、多人协作、复杂业务”而生的语言。
1、JVM = 一套工业级地基
JVM 提供的是什么?
内存管理
垃圾回收
JIT 编译
安全沙箱
这意味着什么?Java 程序员,专注业务;JVM,负责兜底。在真实的公司里,最怕的不是“慢 10ms”,而是:
内存泄漏
随机崩溃
一周后才出现的问题
2、Java 不是一个人写的,是一群人维护的
Java 项目最大的优势,其实是:
强类型
明确的边界
清晰的接口
你离职三年后,别人还能接手。
故事回到火锅店:为什么 SSL 不该让 Java 干?好,重点来了。
1、什么是 SSL Termination?
简单说一句人话:SSL Termination = 解密 HTTPS,浏览器发来的数据是加密的,服务器要先解密,才能看内容。
2、你让谁来干这件事?
选项只有两个:
Java WebServer(Tomcat / Spring Boot)
专门的 Reverse Proxy(Nginx)
为什么 Java terminate SSL “慢”?先给结论:
不是 Java 慢,是 Java“不擅长干这个活”。
SSL 解密,本质是三件事:
CPU 密集型计算(RSA / ECDHE)
大量短连接
IO + 加密混合操作
用 Java terminate SSL 的后果?
线程被 SSL 握手占满
GC 压力上升
业务响应被拖慢
这就像什么?你让火锅店的大厨去门口安检、刷身份证、收外卖。不是他不会,是太浪费。
Reverse Proxy 的真正价值,不只是“快”很多人以为:
Nginx 放前面,是为了“性能”。
这只对了一半。
1、Reverse Proxy 更像什么?
更像火锅店的:专业前台 + 门卫 + 调度中心,它干的事情包括:
SSL Termination
连接复用
限流
熔断
灰度
负载均衡
2、对比一下职责划分

这叫“专业的事,交给专业的工具”。
一个真实的架构对比1、不推荐的做法
问题:
Java 承担太多职责
扩展成本高
性能不可控
2、推荐的做法

好处:
Java 专心写业务
SSL 可横向扩展
架构清晰
看点代码:Spring Boot 的“正确姿势”1、Spring Boot 只监听 HTTP
2、Nginx 负责 SSL
3、Java 只管业务

你会发现:
Java 代码干净得像刚洗过的锅。
为什么大厂都这么干?不是因为他们“迷信 Nginx”。而是因为:
SSL 证书要轮换
加密算法要升级
安全策略经常变
这些事,放在 Java 代码里是灾难。
面试官真正想要的答案如果你在面试中,被问到这个问题,可以这样总结:
Java 依然适合复杂、长期运行的业务系统
Java WebServer 不适合承担 SSL Termination 这种网络密集型工作
Reverse Proxy 的核心价值是职责分离,而不是单纯的性能
架构的本质,是让每一层做最擅长的事情
总结技术选型,从来不是“谁更快”,而是:谁更适合站在那个位置上。
Java 像一个经验丰富的大厨,Nginx 像一个效率极高的前台。你让他们各司其职,系统自然跑得稳、跑得久、跑得远。
END如果你觉得这篇文章对你理解Java 架构和面试思路有帮助,欢迎点个赞,转给正在准备社招的朋友。
我们下篇,继续聊那些面试官“看似随意,其实很狠”的问题。