«Потеряно соединение с сервером, повторное подключение через 12 секунд. Попробуйте сейчас» ошибка узла красного цвета

Я столкнулся с проблемой в пользовательском интерфейсе Node-RED при доступе через обратный прокси-сервер Apache с настроенным шифрованием SSL/TLS. Вот настройка:

Node-RED работает локально по адресу http://localhost:1880. Apache используется в качестве обратного прокси-сервера для пересылки запросов из общедоступного домена (https://iot.example.com) на Node-RED. Шифрование SSL/TLS настроено в Apache для обработки входящих запросов HTTPS. Проблема возникает при доступе к пользовательскому интерфейсу Node-RED через общедоступный доступ (https://iot.example.com). Хотя пользовательский интерфейс загружается изначально, он часто отображает сообщение «Потеряно соединение с сервером, повторное подключение», за которым следуют попытки повторного подключения.

Просматривая журналы ошибок Apache, касающиеся этой проблемы, я заметил следующие журналы:

[Tue Mar 12 01:46:59.958983 2024] [socache_shmcb:debug] [pid 9299] mod_socache_shmcb.c(508): AH00831: socache_shmcb_store (0x21 -> subcache 1)
[Tue Mar 12 01:46:59.959094 2024] [socache_shmcb:debug] [pid 9299] mod_socache_shmcb.c(862): AH00847: insert happened at idx=0, data=(0:32)
[Tue Mar 12 01:46:59.959114 2024] [socache_shmcb:debug] [pid 9299] mod_socache_shmcb.c(865): AH00848: finished insert, subcache: idx_pos/idx_used=0/1, data_pos/data_used=0/212
[Tue Mar 12 01:46:59.959132 2024] [socache_shmcb:debug] [pid 9299] mod_socache_shmcb.c(530): AH00834: leaving socache_shmcb_store successfully
[Tue Mar 12 01:46:59.960120 2024] [ssl:debug] [pid 9299] ssl_engine_kernel.c(415): [client 74.12.48.208:2255] AH02034: Initial (No.1) HTTPS request received for child 2 (server iot.example.com:443)
[Tue Mar 12 01:46:59.960214 2024] [authz_core:debug] [pid 9299] mod_authz_core.c(843): [client 74.12.48.208:2255] AH01628: authorization result: granted (no directives)
[Tue Mar 12 01:46:59.960309 2024] [proxy:debug] [pid 9299] mod_proxy.c(1503): [client 74.12.48.208:2255] AH01143: Running scheme http handler (attempt 0)
[Tue Mar 12 01:46:59.960333 2024] [proxy:debug] [pid 9299] proxy_util.c(2531): AH00942: http: has acquired connection for (localhost)
[Tue Mar 12 01:46:59.960355 2024] [proxy:debug] [pid 9299] proxy_util.c(2587): [client 74.12.48.208:2255] AH00944: connecting http://localhost:1880/comms to localhost:1880
[Tue Mar 12 01:46:59.960376 2024] [proxy:debug] [pid 9299] proxy_util.c(2810): [client 74.12.48.208:2255] AH00947: connected /comms to localhost:1880
[Tue Mar 12 01:46:59.960726 2024] [proxy:debug] [pid 9299] proxy_util.c(3111): AH00951: http: backend socket is disconnected.
[Tue Mar 12 01:46:59.961074 2024] [proxy:debug] [pid 9299] proxy_util.c(3267): (111)Connection refused: AH00957: http: attempt to connect to [::1]:1880 (localhost) failed
[Tue Mar 12 01:46:59.962089 2024] [proxy:debug] [pid 9299] proxy_util.c(3276): AH02824: http: connection established with 127.0.0.1:1880 (localhost)
[Tue Mar 12 01:46:59.962192 2024] [proxy:debug] [pid 9299] proxy_util.c(3462): AH00962: http: connection complete to [::1]:1880 (localhost)
[Tue Mar 12 01:46:59.965368 2024] [proxy:debug] [pid 9299] proxy_util.c(2546): AH00943: http: has released connection for (localhost)
[Tue Mar 12 01:47:00.007071 2024] [ssl:info] [pid 9299] SSL Library Error: error:0A000126:SSL routines::unexpected eof while reading
[Tue Mar 12 01:47:00.007147 2024] [ssl:info] [pid 9299] [client 74.12.48.208:2255] AH01998: Connection closed to child 2 with abortive shutdown (server iot.example.com:443)

Я убедился, что Node-RED запущен и доступен по адресу http://localhost:1880, а сервер Apache правильно настроен для обработки соединений SSL/TLS. Кроме того, нет никаких ограничений брандмауэра, блокирующих связь между Apache и Node-RED.

Вот соответствующий файл конфигурации Apache с использованием прокси:

<VirtualHost *:443>
       
        ServerName iot.example.com
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/IoT

        SSLProxyEngine On
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass /comms wss://localhost:1880/comms/ disablereuse=On
        ProxyPass / http://localhost:1880/
        ProxyPassReverse /comms wss://localhost:1880/comms/
        ProxyPassReverse / http://localhost:1880/


        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

        ErrorLog ${APACHE_LOG_DIR}/IoT.log
        CustomLog ${APACHE_LOG_DIR}/IoT_access.log combined
        
        SSLEngine on
        SSLCertificateFile /root/.acme.sh/iot.example.com_ecc/fullchain.cer
        SSLCertificateKeyFile /root/.acme.sh/safwanshaib.com_ecc/iot.example.com.key
</VirtualHost>

файл settings.js узла-красного цвета:

module.exports = {
    flowFile: 'flows.json',
    flowFilePretty: true,
    uiPort: process.env.PORT || 1880,
    diagnostics: {
        enabled: true,
        ui: true,
    },
    runtimeState: {
        enabled: false,
        ui: false,
    },
    logging: {
        console: {
            level: "info",
            metrics: false,
            audit: false
        }
    },
    exportGlobalContextKeys: false,
    externalModules: {
    },
    editorTheme: {
        palette: {
        },
        projects: {
            enabled: false,
            workflow: {
                mode: "manual"
            }
        },
        codeEditor: {
            lib: "monaco",
            options: {
            }
        },
        markdownEditor: {
            mermaid: {
                enabled: true
            }
        },
    },
    functionExternalModules: true,

    functionTimeout: 0,

    functionGlobalContext: {
    },
    ui: {
        httpRoot: '/',
        httpAdminRoot: '/',
    },
    debugMaxLength: 1000,
    mqttReconnectTime: 15000,
    serialReconnectTime: 15000,
}

Я пробовал обновлять и обновлять пакеты sys, включая Node.js, но безуспешно из-за ошибки подключения.

Что может быть причиной этой проблемы и как ее устранить и решить? Любые идеи или предложения будут с благодарностью приняты.

Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
205
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не следует использовать wss:// для подключения к локальному узлу (красный), поскольку он не использует HTTPS/TLS.

        ProxyPass /comms ws://localhost:1880/comms disablereuse=On
        ProxyPass / http://localhost:1880/
        ProxyPassReverse /comms ws://localhost:1880/comms
        ProxyPassReverse / http://localhost:1880/

Вам также следует удалить завершающий / из пути связи.

Другие вопросы по теме