我有一个简单的 apigee 代理,但我可以在跟踪中看到一个问题,即去往目标的 Host 标头包含代理本身的主机。
即目标得到
Host: xx.apigeename.com
而不是:
Host: my.awsservername.com
目标与代理位于不同的域上,因此这意味着目标服务器未正确处理请求(在这种情况下为 404)。
为什么 Apigee 可能会发送完全相同的主机标头而不是对其进行转换?
我试图通过设置 TargetEndpoint 来明确设置它:
<TargetEndpoint name="xyzzy">
<Description/>
<FaultRules/>
<PreFlow name="PreFlow">
<Request>
<Headers>
<Header name="Host">{target.host}</Header>
</Headers>
</Request>
<Response>
</Response>
</PreFlow>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<Flows/>
<HTTPTargetConnection>
<Properties/>
<URL>https://{targetBackend}/xyzzy</URL>
<SSLInfo>
<Enabled>true</Enabled>
<Protocols>
<Protocol>TLSv1.2</Protocol>
</Protocols>
</SSLInfo>
</HTTPTargetConnection>
</TargetEndpoint>
Apigee 在这方面的文档似乎很模糊。
它变得超级令人沮丧。我们有其他代理工作正常,没有做任何特别的事情。