Протокол 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"'
.