Skip to content

WSS узел Bitshares

Maksim Parkhomenko edited this page Nov 23, 2017 · 6 revisions

Если ваш GUI работает через https, то он уже не сможет взаимодействовать с узлом, доступ к которому не обеспечен шифрованием. Поэтому появляется необходимость перейти от ws к wss при работе с RPC интерфейсом узла.
Узел он же witness_node имеет возможность открывать RPC интерфейс с TLS шифрованием при помощи параметров rpc-tls-endpoint, server-pem и server-pem-password. задаются они параметрами при запуске или же в config.ini файле в data директории:

# Endpoint for TLS websocket RPC to listen on
# rpc-tls-endpoint =

# The TLS certificate file for this server
# server-pem =

# Password for this certificate
# server-pem-password =

Но данный подход не очень приветствуется из-за безопасности и отсутствия централизованной точки входа, поэтому лучше запускать узел с закрытым от внешней сети RPC интерфейсом без шифрования и проксировать на него зашифрованный web socket через nginx. Данный подход дает общую точку входа как на узел так и на faucet и дает возможность балансировать нагрузку между узлами силами nginx в будущем.

Процесс настройки проксирования через nginx

  1. Для начала давайте убедимся, что RPC интерфейс узла закрыт от внешней сети:
    # Endpoint for websocket RPC to listen on
    rpc-endpoint = 127.0.0.1:8090
    
  2. Далее, для того чтобы nginx начал проксировать, нужно добавить правило в конфигурацию (в ту ее часть, которая относится к SSL порту, обычно это 443 порт):
    location ~ /ws/? {
        access_log on;
        proxy_pass http://localhost:8090;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_next_upstream     error timeout invalid_header http_500;
        proxy_connect_timeout   2;
    }
    
    В дальнейшем через proxy_pass возможно задавать сразу нескольких узлов для распределения нагрузки.
    Полный пример конфигурации nginx для сервера, где работает узел с faucet и GUI можно посмотреть в README нашего форка репозитория faucet "tapin".
  3. Теперь узел доступен по url wss://yourdomain:port/ws.

Источники и полезные статьи