Протокол PROXY#

Прокси-серверы и балансировщики нагрузки (например HAProxy или AWS ELB) могут передавать информацию о клиенте (IP-адрес и порт) следующему прокси или балансировщику с помощью протокола PROXY. Чтобы ANIC мог получить эту информацию, в ресурсе ConfigMap необходимо задать следующие параметры:

  • proxy-protocol — должен быть установлен в значение True;

  • real-ip-header — должен быть установлен в значение proxy_protocol;

  • set-real-ip-from — IP-адрес или подсеть прокси или балансировщика, откуда будет приходить информация (подробнее см. set_real_ip_from).

Примечание

Протокол PROXY будет применяться ко всем ресурсам Ingress и VirtualServer. Ресурс TransportServer поддерживает протокол PROXY только при включенном TLS Passthrough.

Пример конфигурации#

kind: ConfigMap
apiVersion: v1
metadata:
  name: angie-config
data:
  proxy-protocol: "True"
  real-ip-header: "proxy_protocol"
  set-real-ip-from: "192.168.0.0/16"

В приведенном примере протокол PROXY настраивается через ресурс ConfigMap. Параметр set-real-ip-from установлен в 192.168.0.0/16 — это CIDR-подсеть прокси, стоящего перед ANIC в этом примере. Если вы хотите доверять всем IP-адресам, можно задать значение 0.0.0.0/0. После создания ресурса ConfigMap IP-адрес клиента будет доступен через переменную $remote_addr в конфигурации Angie.

По умолчанию ANIC запоминает значение $remote_addr и передает его бэкенду в заголовке X-Real-IP. Стандартный формат журнала Angie по умолчанию: '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'.