Я пишу HTTPS-посредник «посредник» и хочу включить SNI, чтобы мне не нужно было создавать новый сервер для каждого хоста. Для балансировки нагрузки я использую модуль узла cluster
, чтобы использовать тот же сервер. Прокси-сервер используется экземпляром Chrome.
Если я создаю сервер в некластеризованном процессе, я могу использовать tls.Server.addContext
, чтобы добавить дополнительные контексты SNI к серверу и позволить ему обслуживать запросы HTTPS, предназначенные для разных хостов. Однако в процессе, созданном cluster.fork
, это не работает. Когда я пытаюсь подключить Chrome к этому прокси-серверу, он откажется принимать соединения, указав следующие причины:
net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH
net::ERR_SSL_VERSION_INTERFERENCE
Я на самом деле использую настроенную версию this . Код очень похож.
В кластерном процессе использование addContext
, похоже, вообще ничего не делает.