我想了解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请求该怎么办?关于上述设置会发生什么以及如何激活它们?
我没有关于他们的清晰图片。

最佳答案

简而言之,http_proxyhttps_proxy都支持HTTPHTTPS请求的代理。

区别在于http_proxy不加密客户端和代理之间的数据传输,而https_proxy加密。因此,https_proxy代理本身需要TLS证书。

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

因为没有统一的规定,所以对于http_proxyhttps_proxy变量,不同的程序可能会执行不同的操作。

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

  • http_proxy = http://user:pass@server:port
  • http_proxy = https://user:pass@server:port
  • https_proxy = https://user:pass@server:port
  • https_proxy = http://user:pass@server:port
  • 关于proxy - http_proxy和https_proxy之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58559109/

    10-10 22:50