反向代理

代理(Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。——维基百科

为了能快速理解反向代理,我先简单说下服务器中的负载均衡

负载均衡是一种网络服务,要解决的是计算机资源最优化使用的问题。最常见的应用是利用多台服务器提供单一服务,这样就可以避免过载,实现快速响应。

而这里我们的单一服务就是所谓的 “反向代理”。它本身不提供服务,真正的服务是由背后的许多服务器来提供,但对用户而言,他们只知道这个“单一服务”的存在,而不知道背后具体提供服务的是谁,像不像总统背后藏了个智囊团……

反向代理举例

访问 example.com,但是很可惜 example.com 没有资源。example.com 说没关系啊,我去 找真的web server 把数据拿下来,返回给你。

这里 example.com 就是一个反向代理。用户只知道我访问的是 example.com,是它提供的数据,并不知道 web server 的存在。

正向代理举例

如果是正向代理(或者叫前向代理),就稍微有些不同了:

在国内我们无法访问 google.com,这时候你就买了一个美国的服务器做梯子并在本地做好相应配置。当你访问 google.com ,发现就可以访问了。这时候你的那个美国服务器就是正向代理,它帮你把 google 的内容下载下来,返回给你,让你以为是你访问的 google。

Caddy 配置反向代理

对 Caddy 不了解的同学,出门左转看 Caddy 快速实践

我们起多个 node 服务,使用 Caddy 作为反向代理:

1
2
3
4
5
6
7
8
9
10
voyax.me {
proxy /app localhost:8000 {
without /app
log ../log/proxy-port-8000.log
}
proxy /api localhost:8080 {
without /api
log ../log/proxy-port-8080.log
}
}
文章作者: voya
文章链接: http://www.voyax.meposts/26b440f2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!