首页 > 解决方案 > http_proxy 和 https_proxy 的区别

问题描述

我想了解 http_proxy 和 https_proxy 环境变量之间的区别。

所以我的理解是,如果我(作为客户端)发送 http 请求,将使用 http_proxy。如果我(作为客户端)发送 https 请求,将使用 https_proxy。

有一些可能的设置来设置 http_proxy 和 https_proxy:

1. http_proxy = http://proxy:port
2. https_proxy = http://proxy:port
3. http_proxy = https://proxy:port
4. https_proxy = https://proxy:port

据我了解,变体 1、2 可能是常见设置。变体 3 怎么样,这是一个可能的设置吗?请求是如何传输的?我认为4也是一个可能的设置,但我不清楚工作流程。

这是我的猜测:

在第一个设置中,如果我向目标服务器发送 http 请求,则将使用 http_proxy,使用此设置,请求将作为客户端发送 --(http 请求) --proxy --(http 请求) -- 服务器

在第二个设置中,如果我向目标服务器发送 https 请求,则将使用 https_proxy,使用此设置,请求将是客户端 --(https 请求)--代理 --(https 请求) --server。在这种情况下,代理只会将加密的数据包传输到服务器,数据包只会在服务器端解密。

在第三个设置中,如果我向目标服务器发送一个 http 请求,使用此设置会发生什么?是否符合条件?

在第四个设置中,如果我向目标服务器发送 https 请求,则将使用 https_proxy,使用此设置,请求将与客户端一起发送 --(https 请求) --proxy --(https 请求) -- 服务器. 在这种情况下,这是否意味着客户端的https请求使用代理的公钥加密,哪个代理先解密请求,然后使用目标服务器的pk加密,然后将请求转发给服务器?但是,在这种情况下,它不会破坏客户端和服务器之间的端到端加密吗?如果我的假设是错误的,那么这个设置的正确图片是什么?

具体来说,我想知道来自客户端 - 代理 - 具有不同代理(http/https)和代理设置(使用 http_proxy/https_proxy 设置)的服务器的数据包流的工作流程。

在所有情况下,我假设服务器都可以接受 http/https 请求。如果服务器只接受 http/https 请求呢?关于上述设置会发生什么以及如何激活它们?我对他们没有清晰的印象。

标签: proxyenvironment-variableshttp-proxy

解决方案


简而言之,两者都http_proxy支持https_proxy代理HTTPHTTPS请求。

不同之处在于http_proxy不加密客户端和代理之间的数据传输,而加密https_proxy。所以 https_proxy 代理本身需要一个 TLS 证书。

一般来说,http_proxy对于本地网络来说就足够了。如果您https_proxy使用仅支持的代理设置变量http_proxy,则连接将无法正常工作。


因为没有统一的规定,对于http_proxyhttps_proxy变量,不同的程序可能会做不同的事情。

为了兼容不同的应用程序,我们可能会添加不同的样式,但实际上只要应用程序能够识别以下其中一种,代理应该可以正常工作(HTTP和HTTPS请求)。


推荐阅读