nginx 做请求转发和用 squid tinyproxy 等代理服务器将请求转发到外网有什么不同

2021-12-14 14:05:38 +08:00
 Renco

中间服务器(内外网)部署了 nginx 后,内网服务器(java)应用只需要将请求发送到 中间服务器,然后中间服务器转发到外网。

若中间服务器部署 squid 代理服务器,内网服务器应用( java )的 http 请求需要设置一个代理配置,直接请求 http 即可通过 中间服务器做代理直接访问外网。

两者在应用的区别是 一个直接请求中间服务器通过中间服务器转发,另一个是直接请求 http 地址,然后通过配置的代理服务器转发。目前来看只有这个区别。不清楚更多实际的应用场景上有啥不同。

1810 次点击
所在节点    程序员
4 条回复
SleipniR
2021-12-14 14:18:16 +08:00
nginx 是反向代理,一般作为服务的负载均衡使用; squid/tinyproxy 是正向代理,一般作为访问外网的跳板使用。
laozhoubuluo
2021-12-14 14:19:07 +08:00
实际上这里说的 nginx 方式走的是反向代理,squid 方式是正向代理。
当然实际上这个说法并不准确,nginx 也可以做正向代理,squid 也可以做反向代理。

两者都是通过代理服务器转发的这个没区别,一般如果业务比较固定(比如就一个两个服务)或者客户端不支持配置代理服务器的时候更偏向反向透明代理,如果有大量的服务一般考虑正向代理(比如代理服务器上互联网)。
cpstar
2021-12-14 14:19:10 +08:00
感觉你用错了,理解一下啥叫正向代理,啥叫反向代理吧。你这个像是正向代理。

如果是内网访问外网,中间服务器做三层 IP 转发就够了,不需要上这些应用服务软件。这个情境下,内网虽然叫“服务器”,但其实是客户端,服务器在外网。
jifengg
2021-12-14 14:36:36 +08:00
你说的应该是 nginx 作为“正向代理”的情况,也就是你的 java 通过 nginx 才能访问资源(而不是被访问),这样的代理方式,和其他提供“正向代理”的软件是没有区别的,包括 clash 和 ssr 也是这种方式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX