http_proxy和https_proxy之间的差异

问题描述 投票:1回答:1

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

proxy environment-variables http-proxy
1个回答
0
投票

我认为您的图片完全正确。

http_proxy / https_proxy都应指向可以代理上游请求的代理服务器。 http_proxy将用于纯HTTP请求,这意味着从代理到上游目标的流量将不加密。 https_proxy用于https请求。这通常需要在代理与上游之间创建一个TCP隧道,然后TLS数据包由代理直接从源中继到上游,而无需对其进行解密。通常使用HTTP CONNECT动词完成此操作-客户端将HTTP CONNECT请求发送到特定上游的代理。代理与上游建立TCP连接。从那时起,代理通过此连接将来自客户端的每个请求直接中继到上游,并且同样将每个响应传递回客户端。这意味着在代理处没有发生TLS终止或起源-这完全不了解内容。

您可以拥有启用了TLS的正向代理服务器,但是机制略有不同。使用http_proxyhttps_proxy,您的客户端可以知道代理的存在,并可以适当地更改HTTP请求以使其适合代理。启用TLS的正向代理通常是透明的。他们解密客户端请求(TLS终止),在适用时使用标准客户端凭据向服务器发起新的TLS请求,然后在将某些安全策略应用于请求/响应之后将响应中继回客户端。http_proxy/ https_proxy环境变量没有直接作用,也不涉及HTTP隧道(通过HTTP CONNECT或其他方式)。

© www.soinside.com 2019 - 2024. All rights reserved.