Apigee Proxy передает тот же заголовок хоста цели - PullRequest
0 голосов
/ 29 октября 2018

У меня есть простой прокси-сервер 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 имеет по этому поводу, кажется очень расплывчатой.

Это становится супер расстраивающим. У нас есть другие прокси, которые работают нормально, не делая ничего особенного.

1 Ответ

0 голосов
/ 19 ноября 2018

Это кажется странным. Apigee не должен делать это по умолчанию. Вы уверены, что другие потоки настроены правильно? Во всяком случае .. вы можете попытаться создать политику AssignMessage, которая добавляет правильный хост. Взгляните на это: https://docs.apigee.com/api-platform/reference/policies/assign-message-policy#Samples

.

/ политика / hostPolicy.xml:

<AssignMessage name="hostPolicy" continueOnError="false">
  <AssignTo createNew="false" type="request"></AssignTo>
  <Set>
    <Headers>
     <Header name="Host">{target.host}</Header>
    </Headers>
  </Set>
</AssignMessage>

. / Цели / xyzzy.xml

  <PreFlow name="PreFlow">
    <Request>
      <Step>
        <Name>hostPolicy</Name>
      </Step>
    </Request>
  </PreFlow>

Примечание: я не проверял это. Прочитайте смутные документы Apigee о политике

...