Модуль ngx_stream_proxy_module
Модуль ngx_stream_proxy_module
(1.9.0) позволяет проксировать
потоки данных по TCP, UDP (1.9.13) и UNIX-сокетам.
Пример конфигурации
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; proxy_responses 1; proxy_timeout 20s; proxy_pass dns.example.com:53; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; }
Директивы
Синтаксис: |
proxy_bind |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.2.
Задаёт локальный IP-адрес
, который будет использоваться в
исходящих соединениях с проксируемым сервером.
Специальное значение off
отменяет действие
унаследованной с предыдущего уровня конфигурации
директивы proxy_bind
, позволяя системе
самостоятельно выбирать локальный IP-адрес.
Синтаксис: |
proxy_buffer_size |
---|---|
Умолчание: |
proxy_buffer_size 16k; |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.4.
Задаёт размер
буфера, в который будут читаться данные,
получаемые от проксируемого сервера.
Также задаёт размер
буфера, в который будут читаться данные,
получаемые от клиента.
Синтаксис: |
proxy_connect_timeout |
---|---|
Умолчание: |
proxy_connect_timeout 60s; |
Контекст: |
stream , server |
Задаёт таймаут для установления соединения с проксированным сервером.
Синтаксис: |
proxy_download_rate |
---|---|
Умолчание: |
proxy_download_rate 0; |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.3.
Ограничивает скорость чтения данных от проксируемого сервера.
Скорость
задаётся в байтах в секунду.
Значение 0 отключает ограничение скорости.
Ограничение устанавливается на соединение,
поэтому, если nginx одновременно
откроет два соединения к проксируемому серверу,
суммарная скорость будет вдвое выше заданного ограничения.
Синтаксис: |
proxy_next_upstream |
---|---|
Умолчание: |
proxy_next_upstream on; |
Контекст: |
stream , server |
При невозможности установить соединение с проксируемым сервером определяет, будет ли клиентское соединение передано следующему серверу.
Передача соединения следующему серверу может быть ограничена по количеству попыток и по времени.
Синтаксис: |
proxy_next_upstream_timeout |
---|---|
Умолчание: |
proxy_next_upstream_timeout 0; |
Контекст: |
stream , server |
Ограничивает время, в течение которого возможна передача соединения
следующему серверу.
Значение 0
отключает это ограничение.
Синтаксис: |
proxy_next_upstream_tries |
---|---|
Умолчание: |
proxy_next_upstream_tries 0; |
Контекст: |
stream , server |
Ограничивает число допустимых попыток для передачи соединения
следующему серверу.
Значение 0
отключает это ограничение.
Синтаксис: |
proxy_pass |
---|---|
Умолчание: | — |
Контекст: |
server |
Задаёт адрес проксируемого сервера. Адрес может быть указан в виде доменного имени или IP-адреса, и порта:
proxy_pass localhost:12345;
или в виде пути UNIX-сокета:
proxy_pass unix:/tmp/stream.socket;
Если доменному имени соответствует несколько адресов, то все они будут использоваться по очереди (round-robin). Кроме того, в качестве адреса можно указать группу серверов.
Синтаксис: |
proxy_protocol |
---|---|
Умолчание: |
proxy_protocol off; |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.2.
Включает протокол PROXY для соединений с проксируемым сервером.
Синтаксис: |
proxy_responses |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.13.
Задаёт количество датаграмм, ожидаемых от проксируемого сервера в ответ на запрос клиента в случае, если используется протокол UDP. По умолчанию количество датаграмм не ограничено: ответные датаграммы будут отправляться до истечения значения proxy_timeout.
Синтаксис: |
proxy_ssl |
---|---|
Умолчание: |
proxy_ssl off; |
Контекст: |
stream , server |
Включает протоколы SSL/TLS для соединений с проксируемым сервером.
Синтаксис: |
proxy_ssl_certificate |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Задаёт файл
с сертификатом в формате PEM
для аутентификации на проксируемом сервере.
Синтаксис: |
proxy_ssl_certificate_key |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Задаёт файл
с секретным ключом в формате PEM
для аутентификации на проксируемом сервере.
Синтаксис: |
proxy_ssl_ciphers |
---|---|
Умолчание: |
proxy_ssl_ciphers DEFAULT; |
Контекст: |
stream , server |
Описывает разрешённые шифры для соединений с проксируемым сервером. Шифры задаются в формате, поддерживаемом библиотекой OpenSSL.
Полный список можно посмотреть с помощью команды
“openssl ciphers
”.
Синтаксис: |
proxy_ssl_crl |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Указывает файл
с отозванными сертификатами (CRL)
в формате PEM, используемыми при проверке
сертификата проксируемого сервера.
Синтаксис: |
proxy_ssl_name |
---|---|
Умолчание: |
proxy_ssl_name хост из proxy_pass; |
Контекст: |
stream , server |
Позволяет переопределить имя сервера, используемое при проверке сертификата проксируемого сервера, а также для передачи его через SNI при установлении соединения с проксируемым сервером.
По умолчанию используется имя хоста из адреса, заданного директивой proxy_pass.
Синтаксис: |
proxy_ssl_password_file |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Задаёт файл
с паролями от
секретных ключей,
где каждый пароль указан на отдельной строке.
Пароли применяются по очереди в момент загрузки ключа.
Синтаксис: |
proxy_ssl_server_name |
---|---|
Умолчание: |
proxy_ssl_server_name off; |
Контекст: |
stream , server |
Разрешает или запрещает передачу имени сервера через расширение Server Name Indication протокола TLS (SNI, RFC 6066) при установлении соединения с проксируемым сервером.
Синтаксис: |
proxy_ssl_session_reuse |
---|---|
Умолчание: |
proxy_ssl_session_reuse on; |
Контекст: |
stream , server |
Определяет, использовать ли повторно SSL-сессии при
работе с проксируемым сервером.
Если в логах появляются ошибки
“SSL3_GET_FINISHED:digest check failed
”,
то можно попробовать выключить
повторное использование сессий.
Синтаксис: |
proxy_ssl_protocols
[ |
---|---|
Умолчание: |
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
Контекст: |
stream , server |
Разрешает указанные протоколы для соединений с проксируемым сервером.
Синтаксис: |
proxy_ssl_trusted_certificate |
---|---|
Умолчание: | — |
Контекст: |
stream , server |
Задаёт файл
с доверенными сертификатами CA в формате PEM,
используемыми при проверке
сертификата проксируемого сервера.
Синтаксис: |
proxy_ssl_verify |
---|---|
Умолчание: |
proxy_ssl_verify off; |
Контекст: |
stream , server |
Разрешает или запрещает проверку сертификата проксируемого сервера.
Синтаксис: |
proxy_ssl_verify_depth |
---|---|
Умолчание: |
proxy_ssl_verify_depth 1; |
Контекст: |
stream , server |
Устанавливает глубину проверки в цепочке сертификатов проксируемого сервера.
Синтаксис: |
proxy_timeout |
---|---|
Умолчание: |
proxy_timeout 10m; |
Контекст: |
stream , server |
Задаёт таймаут
между двумя идущими подряд
операциями чтения или записи
на клиентском соединении или соединении с проксируемым сервером.
Если по истечении этого времени данные не передавались,
соединение закрывается.
Синтаксис: |
proxy_upload_rate |
---|---|
Умолчание: |
proxy_upload_rate 0; |
Контекст: |
stream , server |
Эта директива появилась в версии 1.9.3.
Ограничивает скорость чтения данных от клиента.
Скорость
задаётся в байтах в секунду.
Значение 0 отключает ограничение скорости.
Ограничение устанавливается на соединение,
поэтому, если клиент одновременно
откроет два соединения,
суммарная скорость будет вдвое выше заданного ограничения.