问题描述
我在 X-Forwarded - *
标题上找到了一些有趣的读物,包括部分,以及。
I've found some interesting reading on the X-Forwarded-*
headers, including the Reverse Proxy Request Headers section in the Apache documentation, as well as the Wikipedia article on X-Forwarded-For.
我理解:
-
X-Forwarded-For
给出连接到代理的客户地址 -
X-Forwarded-Port
给出客户端在代理上连接的端口(例如80
或443
) -
X-Forwarded-Proto
给出客户端用于连接代理的协议(http
或https
) -
X- Forwarded-Host
给出客户端发送给代理的Host
标头的内容。
X-Forwarded-For
gives the address of the client which connected to the proxyX-Forwarded-Port
gives the port the client connected to on the proxy (e.g.80
or443
)X-Forwarded-Proto
gives the protocol the client used to connect to the proxy (http
orhttps
)X-Forwarded-Host
gives the content of theHost
header the client sent to the proxy.
这些都有意义。
然而,我仍然无法弄清楚 X-Forwarded-Host
的真实用例。我理解需要在不同的端口上重复连接或使用不同的方案,但为什么代理服务器在重复请求时会更改主机
标头目标服务器?
However, I still can't figure out a real life use case of X-Forwarded-Host
. I understand the need to repeat the connection on a different port or using a different scheme, but why would a proxy server ever change the Host
header when repeating the request to the target server?
推荐答案
如果你使用像作为API的前端,你需要像X-FORWARDED-HOST这样的东西来理解用于连接API的主机名,因为Apigee配置了你的后端DNS,nginx和你的应用程序堆栈只看到主机头作为你的后端DNS名称,而不是首先调用的主机名。
If you use a front-end service like Apigee as the front-end to your APIs, you will need something like X-FORWARDED-HOST to understand what hostname was used to connect to the API, because Apigee gets configured with whatever your backend DNS is, nginx and your app stack only see the Host header as your backend DNS name, not the hostname that was called in the first place.
这篇关于X-Forwarded-Host标头的实际使用情况?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!