为什么要用反向代理?常见的那几款

举报
yd_250058965 发表于 2026/11/13 21:22:06 2026/11/13
【摘要】 服务器上跑几个服务,每个都占一个端口:网盘 3000,博客 4000,接口 5000。要是把这三个端口全开到公网上,不好记,也不放心。反向代理就是来解决这个问题的。外面只开一个门,请求先到它这里,它再按域名或路径分给后面的服务。 它到底干了什么用户访问 blog.example.com,DNS 指到这台服务器。反向代理听着 80 和 443 端口,看到请求里的域名是 blog.example...

服务器上跑几个服务,每个都占一个端口:网盘 3000,博客 4000,接口 5000。要是把这三个端口全开到公网上,不好记,也不放心。

反向代理就是来解决这个问题的。外面只开一个门,请求先到它这里,它再按域名或路径分给后面的服务。

它到底干了什么

用户访问 blog.example.com,DNS 指到这台服务器。反向代理听着 80 和 443 端口,看到请求里的域名是 blog.example.com,就转给本机 4000;看到 api.example.com,就转给 5000。

用户那边感觉不到后面有几台机器、开了几个端口,看到的只是一个域名。

为什么要用

只暴露一个入口。 80 和 443 对外开放,后面那些服务只监听 127.0.0.1 或内网地址。

HTTPS 只配一次。 证书装在反代上,后面的服务继续跑 HTTP,不用每个服务都折腾一遍证书。

一个域名挂多个服务。 可以按子域名分,blog. 一个、api. 一个;也可以按路径分,/notes、/api 各走各的。

后端随便换。 服务从 3000 挪到 3100,只改反代里的一行,用户那边没感觉。

分流。 同一个服务起了三台,反代轮流把请求发过去。

统一加东西。 缓存、压缩、限流、IP 白名单、访问日志,都放在这一层做。

常见的三款

  • Nginx:2002 年由 Igor Sysoev 开发,2004 年开源,最早是为了扛住上万个并发连接。2019 年被 F5 以 6.7 亿美元收购,开源版一直在。配置是手写文本,功能全、资料多,HTTPS 要自己配 certbot 之类的工具。

  • Caddy:Go 写的,最大的特点是自动 HTTPS。给它一个域名,它自己去 Let’s Encrypt 或 ZeroSSL 申请证书并续期。配置就几行:

    blog.example.com {
        reverse_proxy localhost:4000
    }
    

    支持 HTTP/1、HTTP/2、HTTP/3,WebSocket、gRPC、FastCGI 也能转。

  • Apache httpd:比 Nginx 还老,1995 年就有了。用 mod_proxy 做反代,老项目和共享主机上还很多,.htaccess 那一套只有它熟。

一张表放一起看:

工具 语言 上手 自动 HTTPS 适合
Nginx C 中 要另配 通用、资料最多
Caddy Go 低 自带 个人项目、小站
Apache httpd C 中 要另配 老项目、.htaccess

怎么选

想省事:Caddy。

已经会 Nginx,或者要抄别人的配置:Nginx。

老项目、依赖 .htaccess:Apache。

我这边

服务器上用的是 Nginx,systemd 管着,前面挡着应用,证书用 certbot 申请和续期。Caddy 和 Apache 只读过文档,没在这台机器上实际部署过,上面关于它们的内容是按官方文档整理的。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。