AndServer icon indicating copy to clipboard operation
AndServer copied to clipboard

反向代理到底怎么用的 ?

Open jeesk opened this issue 2 years ago • 2 comments

有教程没有, 看了以前的回答, 完全没有搞懂怎么类比nginx 的反向代理。

jeesk avatar Jul 14 '22 13:07 jeesk

mServer = AndServer.proxyServer() .addProxy("www.example.com", "http://192.167.1.11:8080") .port(80) .timeout(10, TimeUnit.SECONDS) .build();

就拿这个代码来说, 我在什么地方访问 www.example.com , 会转发到192.167.1.11:8000, 能详细说明一下吗? 还有配置的80 端口, 这个端口需要配置吗? 我看见好几个网友在问了, 我就再问一次吧。

jeesk avatar Jul 14 '22 13:07 jeesk

把问题汇总下

passerbyo avatar Jul 15 '22 11:07 passerbyo

你没理解代理和反向代理。

代理一般用于客户端,是客户端访问目标主机,但不直接连接目标主机,通过一个代理主机连接目标主机,可以隐藏真实客户端或者在客户端不能直接连接目标主机时桥接,访问的地址还是目标主机的地址(访问的还是目标主机)。

反向代理是客户端访问反向代理主机,不访问目标主机也不连接目标主机,反向代理主机会转发请求到目标主机。转发后的目标主机对客户端来说是不感知的,因此这个目标主机是错误的说法,对客户端来说反向代理主机才是目标主机,所以反向代理一般用户服务端来讲的,用于隐藏真实的服务器。

比如客户端访问http://www.yanzhenjie.com,请求打到了A主机上,但是A主机上部署的AndServer会把这个请求重定向到另一个B主机,B主机的地址是http://192.168.1.18,客户端收到的内容是B主机的响应,但是客户端并不知道真正响应的主机是B主机,这样针对客户端就把B主机隐藏起来了。

所以AndServer提供了普通Server和反向代理Server能力。然后你再看文档就懂了。

yanzhenjie avatar Jan 28 '23 09:01 yanzhenjie

比如客户端访问http://www.yanzhenjie.com,请求打到了A主机上

A主机还是要需要开启一个端口。

我觉得代码设计为

AndServer.proxyServer()
    .addProxy("www.example.com")
    .port(80)
    .timeout(10, TimeUnit.SECONDS)
    .build();

这样是否更合理?@yanzhenjie

访问A主机(部署AndSever的Android设备)的80端口即为访问了www.example.com

huio avatar Feb 02 '23 03:02 huio

比如客户端访问http://www.yanzhenjie.com,请求打到了A主机上

A主机还是要需要开启一个端口。

我觉得代码设计为

AndServer.proxyServer()
    .addProxy("www.example.com")
    .port(80)
    .timeout(10, TimeUnit.SECONDS)
    .build();

这样是否更合理?@yanzhenjie

访问A主机(部署AndSever的Android设备)的80端口即为访问了www.example.com

不合理。

yanzhenjie avatar Feb 16 '23 06:02 yanzhenjie

这个问题先关闭了哈,本身是不存在问题的。你们不理解原理的需要先加深理解。

yanzhenjie avatar Feb 16 '23 06:02 yanzhenjie