Skip to content

Конфигурация сервиса Gateway

Логгер

КлючОписание
gateway.log.lvlуровень логгирования приложения
5 - debug
4 - info
3 - warning
2 - error
Пример env: POTENTIAL_GATEWAY_LOG_LVL=5
gateway.log.pathпуть до лога сервиса
Пример env: POTENTIAL_GATEWAY_LOG_PATH=/tmp/next_box/gateway.log
пример части конфигурации в yml конфиге
yaml
gateway:
  log:
    lvl: 5
    path: /tmp/next_box/gateway.log

Внешний Http сервер

КлючОписание
gateway.http.hostАдрес внешнего http сервера
Пример env: POTENTIAL_GATEWAY_HTTP_HOST=0.0.0.0
gateway.http.portПорт внешнего http сервера
Пример env: POTENTIAL_GATEWAY_HTTP_PORT=6006
gateway.http.max_multipart_body_sizeМаксимальный размер тела, при мультипарт запросах POTENTIAL_GATEWAY_HTTP_MAX_MULTIPART_BODY_SIZE=4.3980465e+12
gateway.http.read_timeoutМаксимальная продолжительность чтения всего запроса, включая текст. Нулевое или отрицательное значение означает, что тайм-аута не будет. POTENTIAL_GATEWAY_HTTP_READ_TIMEOUT=10000
gateway.http.write_timeoutМаксимальное время до истечения времени ожидания записи ответа. Оно сбрасывается всякий раз, когда считывается заголовок нового запроса. Как и ReadTimeout, оно не позволяет обработчикам принимать решения для каждого отдельного запроса. Нулевое или отрицательное значение означает, что тайм-аута не будет.
Пример env: POTENTIAL_GATEWAY_HTTP_WRITE_TIMEOUT=10000
gateway.http.limiter.enableВключить ограничение количества запросов по ip.
Пример env: POTENTIAL_GATEWAY_HTTP_LIMITER_ENABLE=true
gateway.http.limiter.period_secПериод ограничения запросов в секундах.
Пример env: POTENTIAL_GATEWAY_HTTP_LIMITER_PERIOD_SEC=60
gateway.http.limiter.limitМаксимальное количество запросов за период указанный в period_sec.
Пример env: POTENTIAL_GATEWAY_HTTP_LIMITER_LIMIT=1000
пример части конфигурации в yml конфиге
yaml
gateway:
  http:
    host: 0.0.0.0
    max_multipart_body_size: 0
    port: 6006
    read_timeout: 0
    write_timeout: 0
  limiter:
    enable: true
    period_sec: 60
    limit: 1000

Внутренний Http сервер

КлючОписание
gateway.internal_http.hostАдрес внутреннего http сервера
Пример env: POTENTIAL_GATEWAU_INTERNAL_HTTP_HOST=0.0.0.0
gateway.internal_http.portПорт внутреннего http сервера
Пример env: POTENTIAL_GATEWAY_INTERNAL_HTTP_PORT=6001
gateway.internal_http.max_multipart_body_sizeМаксимальный размер тела, при мультипарт запросах POTENTIAL_GATEWAY_INTERNAL_HTTP_MAX_MULTIPART_BODY_SIZE=
gateway.internal_http.max_header_sizeМаксимальный размер заголовков POTENTIAL_GATEWAY_HTTP_MAX_HEADER_SIZE=
gateway.internal_http.read_timeoutМаксимальная продолжительность чтения всего запроса, включая текст. Нулевое или отрицательное значение означает, что тайм-аута не будет. POTENTIAL_GATEWAY_HTTP_READ_TIMEOUT=
gateway.internal_http.write_timeoutМаксимальное время до истечения времени ожидания записи ответа. Оно сбрасывается всякий раз, когда считывается заголовок нового запроса. Как и ReadTimeout, оно не позволяет обработчикам принимать решения для каждого отдельного запроса. Нулевое или отрицательное значение означает, что тайм-аута не будет.
Пример env: POTENTIAL_GATEWAY_HTTP_WRITE_TIMEOUT=
gateway.security.mtls_enableВключение шифрование трафика mTLS между сервисами NB.
Пример env: POTENTIAL_GATEWAY_SECURITY_MTLS_ENABLE=false
gateway.security.client_cert_key_pathПриватный ключ сервера для mTLS.
Пример env: POTENTIAL_GATEWAY_SECURITY_SERVER_CERT_KEY_PATH=./host.docker.internal.key
gateway.security.client_cert_pathСертификат сервера для mTLS.
Пример env: POTENTIAL_GATEWAY_SECURITY_SERVER_CERT_PATH=./host.docker.internal.crt
gateway.security.server_cert_key_pathПриватный ключ клиента для mTLS.
Пример env: POTENTIAL_GATEWAY_SECURITY_CLIENT_CERT_KEY_PATH=./client.key
gateway.security.server_cert_pathСертификат сервера для mTLS.
Пример env: POTENTIAL_GATEWAY_SECURITY_CLIENT_CERT_PATH=./client.crt
gateway.security.ca_cert_pathКорневой сертификат для mTLS.
Пример env: POTENTIAL_GATEWAY_SECURITY_CA_CERT_PATH=./cert.crt
пример части конфигурации в yml конфиге
yaml
gateway:
  internal_http:
    host: 0.0.0.0
    port: 6001
    max_multipart_body_size: 0
    max_header_size: 0
    read_timeout: 0
    write_timeout: 0
  security:
    ca_cert_path: ./cert.crt
    client_cert_key_path: ./client.key
    client_cert_path: ./client.crt
    mtls_enable: false
    server_cert_key_path: ./host.docker.internal.key
    server_cert_path: ./host.docker.internal.crt

База данных

КлючОписание
gateway.database.dsnDsn для доступа к базе данных в формате:
postgres://<login>:<password>@<address>:<port>/gateway"
login - логин базы
password - пароль от базы
address - адрес до базы
port - порт до базы
Пример env: POTENTIAL_GATEWAY_DATABASE_DSN=postgres://admin:admin@127.0.0.1:5432/gateway
пример части конфигурации в yml конфиге
yaml
gateway:
  database:
    dsn: postgres://admin:admin@127.0.0.1:5432/gateway

Общие настройки сервиса

КлючОписание
gateway.service.tokenТокен для межсервисного общения. Такой же токен должен быть у каждого сервиса nextbox.
Пример env: POTENTIAL_GATEWAY_SERVICE_TOKEN=qwe123
gateway.service.nameНазвание сервиса
Пример env: POTENTIAL_GATEWAY_SERVICE_NAME=Gateway
gateway.service.route_nameНазвание роута сервиса, лучше не менять, иначе возможны проблемы в общении между сервисами!
Пример env: POTENTIAL_GATEWAY_SERVICE_ROUTE_NAME=gateway
gateway.service.back_urlАдрес по которому обращаются к сервису другие сервисы NB.
Пример env: POTENTIAL_GATEWAY_SERVICE_BACK_URL=http://127.0.0.1:6005
gateway.service.instance_numberНомер сервиса. Используется для горизонтального масштабирования сервисов. В текущем сервисе не должен отличаться от 1
Пример env: POTENTIAL_GATEWAY_SERVICE_INSTANCE_NUMBER=1
gateway.discovery.urlАдрес discovery сервиса в NB. В котором регистрируются все сервисы в NB
Пример env: POTENTIAL_GATEWAY_DISCOVERY_URL=http://127.0.0.1:6005
пример части конфигурации в yml конфиге
yaml
gateway:
  service:
    back_url: http://127.0.0.1:6005
    instance_number: 1
    name: Gateway
    route_name: gateway
    token: qwe123
  discovery:
    url: http://127.0.0.1:6001

Безопасность

КлючОписание
gateway.tokens.sign_keyСекретный ключ для подписи авторизационных JWT токенов.
Пример env: POTENTIAL_GATEWAY_TOKENS_LIMIT_SIGN_KEY=qwe123
пример части конфигурации в yml конфиге
yaml
gateway:
  tokens:
    sign_key: qwe123

Настройки rabbitmq

КлючОписание
gateway.rabbit_mq.userЛогин пользователя в rabbitmq.
Пример env: POTENTIAL_GATEWAY_RABBIT_MQ_USER=guest
gateway.rabbit_mq.passwordПароль пользователя в rabbitmq.
Пример env: POTENTIAL_GATEWAY_RABBIT_MQ_PASSWORD=guest
gateway.rabbit_mq.hostАдрес сервера rabbitmq.
Пример env: POTENTIAL_GATEWAY_RABBIT_MQ_HOST=127.0.0.1
gateway.rabbit_mq.portПорт сервера rabbitmq.
Пример env: POTENTIAL_GATEWAY_RABBIT_MQ_PORT=5672
gateway.rabbit_mq.vhostvhost rabbitmq.
Пример env: POTENTIAL_GATEWAY_RABBIT_MQ_VHOST=
пример части конфигурации в yml конфиге
yaml
gateway:
  rabbit_mq:
    host: 127.0.0.1
    password: guest
    port: "5672"
    user: guest
    vhost: ""

Настройки redis

КлючОписание
gateway.redis.hostАдрес redis.
Пример env: POTENTIAL_GATEWAY_REDIS_HOST=127.0.0.1
gateway.redis.portПорт redis.
Пример env: POTENTIAL_GATEWAY_REDIS_PORT=6379
gateway.redis.loginЛогин redis.
Пример env: POTENTIAL_GATEWAY_REDIS_LOGIN=
gateway.redis.passwordПароль redis.
Пример env: POTENTIAL_GATEWAY_REDIS_PASSWORD=
gateway.redis.db_numНомер базы redis.
Пример env: POTENTIAL_GATEWAY_REDIS_DB_NUM=0
пример части конфигурации в yml конфиге
yaml
gateway:
  redis:
    db_num: 0
    host: 127.0.0.1
    login: ""
    password: ""
    port: 6379