Proxy#
Позволяет проксировать потоки данных по TCP, UDP и UNIX-сокетам. Задает локальный IP-адрес, который будет использоваться в исходящих соединениях с проксируемым сервером. В значении параметра допустимо использование переменных. Специальное значение Параметр Для работы параметра обычно требуется запустить рабочие процессы Angie с привилегиями суперпользователя. В Linux этого не требуется, так как если указан параметр transparent, то рабочие процессы наследуют capability CAP_NET_RAW из главного процесса. Важно Необходимо настроить таблицу маршрутизации ядра для перехвата сетевого трафика с проксируемого сервера. Задает размер буфера, в который будут читаться данные, получаемые от проксируемого сервера. Также задает размер буфера, в который будут читаться данные, получаемые от клиента. Задает таймаут для установления соединения с проксируемым сервером. По умолчанию http, server, location Настраивает завершение всех соединений с проксируемым сервером,
если он был удален из группы или помечен как постоянно недоступный
в результате процесса reresolve
или команды API Сессия завершается, когда обрабатывается следующее событие чтения или записи
для клиента или проксируемого сервера. Установка времени включает таймаут до завершения сессии;
при выборе значения Ограничивает скорость чтения данных от проксируемого сервера;
отключает ограничение скорости Примечание Ограничение устанавливается на соединение, поэтому, если Angie одновременно откроет два соединения к проксируемому серверу, суммарная скорость будет вдвое выше заданного ограничения. В значении параметра можно использовать переменные. Это может быть полезно в случаях, когда скорость нужно ограничивать в зависимости от какого-либо условия: Разрешает или запрещает независимое закрытие каждой из сторон проксируемого соединения TCP ("TCP half-close"). Если разрешено, то проксирование по TCP будет продолжаться, пока обе стороны не закроют соединение. При невозможности установить соединение с проксируемым сервером определяет, будет ли клиентское соединение передано следующему серверу. Передача соединения следующему серверу может быть ограничена по количеству попыток и по времени. По умолчанию stream, server Ограничивает время, в течение которого возможна передача запроса следующему серверу. отключает это ограничение По умолчанию stream, server Ограничивает число допустимых попыток для передачи запроса следующему серверу. отключает это ограничение Задает адрес проксируемого сервера;
или в виде пути UNIX-сокета: Если доменному имени соответствует несколько адресов, то все они будут использоваться по очереди (round-robin). Кроме того, в качестве адреса можно указать группу серверов. Адрес можно также задать с помощью переменных: В этом случае имя сервера ищется среди описанных групп серверов и если не найдено, то определяется с помощью resolver'а. Включает протокол PROXY для соединений с проксируемым сервером. Задает число датаграмм, полученных от клиента, по достижении которого удаляется привязка между клиентом и существующей UDP-сессией. После получения указанного количества датаграмм следующая датаграмма, полученная от того же клиента, начинает новую сессию. Сессия завершится после отправки всех принятых датаграмм на проксируемый сервер и получения указанного количества ответов или после таймаута. Задает количество датаграмм, ожидаемых от проксируемого сервера в ответ на датаграмму клиента в случае, если используется протокол UDP. Задаваемое число служит подсказкой для завершения сессии. По умолчанию количество датаграмм не ограничено. Если указано нулевое значение, то ответ не ожидается. Однако если ответ получен и сессия еще не завершилась, то ответ будет обработан. По умолчанию stream, server Конфигурирует поведение "TCP keepalive" для исходящих соединений к проксируемому серверу. По умолчанию для сокета действуют настройки операционной системы. для сокета включается параметр SO_KEEPALIVE Включает протоколы SSL/TLS для соединений с проксируемым сервером. Задает файл с сертификатом в формате PEM для аутентификации на проксируемом сервере. В имени файла можно использовать переменные. Добавлено в версии 1.2.0. При включенном proxy_ssl_ntls директива принимает два аргумента вместо одного: Задает файл с секретным ключом в формате PEM для аутентификации на проксируемом сервере. В имени файла можно использовать переменные. Добавлено в версии 1.2.0. При включенном proxy_ssl_ntls директива принимает два аргумента вместо одного: Описывает разрешенные шифры для запросов к проксируемому серверу. Шифры задаются в формате, поддерживаемом библиотекой OpenSSL. Список шифров зависит от установленной версии OpenSSL.
Полный список можно посмотреть с помощью команды Задает произвольные конфигурационные команды OpenSSL при установлении соединения с проксируемым сервером. Важно Директива поддерживается при использовании OpenSSL 1.0.2 и выше. На одном уровне может быть указано несколько директив proxy_ssl_conf_command. Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы proxy_ssl_conf_command. Осторожно Следует учитывать, что изменение настроек OpenSSL напрямую может привести к неожиданному поведению. Указывает файл с отозванными сертификатами (CRL) в формате PEM, используемыми при проверке сертификата проксируемого сервера. Позволяет переопределить имя сервера, используемое при проверке сертификата проксируемого сервера, а также для передачи его через SNI при установлении соединения с проксируемым сервером. Имя сервера можно также задать с помощью переменных. По умолчанию используется имя хоста из адреса, заданного директивой proxy_pass. Добавлено в версии 1.2.0. Включает клиентскую поддержку NTLS при использовании TLS библиотеки TongSuo. Важно Angie необходимо собрать с использованием параметра конфигурации --with-ntls, с соответствующей SSL библиотекой с поддержкой NTLS Задает файл с паролями от секретных ключей, где каждый пароль указан на отдельной строке. Пароли применяются по очереди в момент загрузки ключа. По умолчанию stream, server Изменено в версии 1.2.0: Параметр Разрешает указанные протоколы для соединений с проксируемым сервером. По умолчанию stream, server Разрешает или запрещает передачу имени сервера,
заданного директивой proxy_ssl_name,
через расширение
Server Name Indication
протокола TLS
(SNI,
RFC 6066)
при установлении соединения с проксируемым сервером. По умолчанию stream, server Определяет, использовать ли повторно SSL-сессии при работе с проксируемым сервером. Если в логах появляются ошибки "SSL3_GET_FINISHED:digest check failed", то можно попробовать выключить повторное использование сессий. Задает файл с доверенными сертификатами CA в формате PEM, используемыми при проверке сертификата проксируемого HTTPS-сервера. Разрешает или запрещает проверку сертификата проксируемого сервера. Устанавливает глубину проверки в цепочке сертификатов проксируемого сервера. Задает таймаут между двумя идущими подряд операциями чтения или записи на клиентском соединении или соединении с проксируемым сервером. Если по истечении этого времени данные не передавались, соединение закрывается. Добавлено в версии 1.4.0: PRO Задает максимальное время бездействия
установленного с сервером соединения
для проверок, настроенных с помощью директивы upstream_probe (PRO);
при превышении этого предела соединение будет закрыто. Ограничивает скорость чтения данных от клиента. Скорость задается в байтах в секунду. отключает ограничение скорости Примечание Ограничение устанавливается на соединение, поэтому, если клиент одновременно откроет два соединения, суммарная скорость будет вдвое выше заданного ограничения. В значении параметра можно использовать переменные. Это может быть полезно в случаях, когда скорость нужно ограничивать в зависимости от какого-либо условия: proxy_upload_rate $rate;Пример конфигурации#
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
Директивы#
proxy_bind#
off
отменяет действие унаследованной с предыдущего уровня конфигурации директивы proxy_bind, позволяя системе самостоятельно выбирать локальный IP-адрес.transparent
позволяет задать нелокальный IP-aдрес, который будет использоваться в исходящих соединениях с проксируемым сервером, например, реальный IP-адрес клиента:proxy_bind $remote_addr transparent;
proxy_buffer_size#
proxy_connect_timeout#
proxy_connection_drop#
proxy_connection_drop
время | on
| off
;proxy_connection_drop off;
DELETE
.on
сессии завершаются немедленно.proxy_download_rate#
скорость
задается в байтах в секунду.0
map $slow $rate {
1 4k;
2 8k;
}
proxy_download_rate $rate
proxy_half_close#
proxy_next_upstream#
proxy_next_upstream_timeout#
proxy_next_upstream_timeout
время;proxy_next_upstream_timeout 0;
0
proxy_next_upstream_tries#
proxy_next_upstream_tries
число;proxy_next_upstream_tries 0;
0
proxy_pass#
адрес
может быть указан в виде доменного имени или IP-адреса,
за которым следует порт:proxy_pass localhost:12345;
proxy_pass unix:/tmp/stream.socket;
proxy_pass $upstream;
proxy_protocol#
proxy_requests#
proxy_responses#
proxy_socket_keepalive#
proxy_socket_keepalive
on
| off
;proxy_socket_keepalive off;
""
on
proxy_ssl#
proxy_ssl_certificate#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
proxy_ssl_certificate_key#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
proxy_ssl_ciphers#
openssl ciphers
.proxy_ssl_conf_command#
proxy_ssl_crl#
proxy_ssl_name#
proxy_ssl_ntls#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
./configure --with-openssl=../Tongsuo-8.3.0 \
--with-openssl-opt=enable-ntls \
--with-ntls
proxy_ssl_password_file#
proxy_ssl_protocols#
proxy_ssl_protocols
[SSLv2
] [SSLv3
] [TLSv1
] [TLSv1.1
] [TLSv1.2
] [TLSv1.3
];proxy_ssl_protocols TLSv1.2 TLSv1.3;
TLSv1.3
добавлен к используемым по умолчанию.proxy_ssl_server_name#
proxy_ssl_server_name
on
| off
;proxy_ssl_server_name off;
proxy_ssl_session_reuse#
proxy_ssl_session_reuse
on
| off
;proxy_ssl_session_reuse on;
proxy_ssl_trusted_certificate#
proxy_ssl_verify#
proxy_ssl_verify_depth#
proxy_timeout#
upstream_probe_timeout (PRO)#
proxy_upload_rate#
0
map $slow $rate {
1 4k;
2 8k;
}
proxy_upload_rate $rate;