r0n1x
@r0n1x
Помогу с html, css, js

Nodejs + expressjs + http2?

Собственно решил перевести сайт на https. Получил сертификат.

const   
    fs = require('fs'),
    express = require('express'),
    app = express(),
    http = require('http'),
    http2 = require('http2'),
    https = require('https'),
    spdy = require('spdy');

app.use(express.static(__dirname + '/public'));

const 
    credentials = {
        key: fs.readFileSync('./sslcert/privkey.pem', 'utf8'),
        cert: fs.readFileSync('./sslcert/cert.pem', 'utf8'),
        ca: fs.readFileSync('./sslcert/chain.pem', 'utf8')
    };

http
    .createServer(app)
    .listen(80, (error) => {
        if (error) {
            console.error(error)
            return process.exit(1)
        } else {
            console.log('Listening on port: 80.')
        }
    });

https
    .createServer(credentials, app)
    .listen(443, (error) => {
        if (error) {
            console.error(error)
            return process.exit(1)
        } else {
            console.log('Listening on port: 443.')
        }
    });


Единственный "рабочий" вариант, НО до сих пор отображается HTTP/1.1.
Пробовал с помощью spdy - ошибка "RangeError: Invalid typed array length: -4095".
Через http2 сайт вообще отказывается открываться.

Кто сталкивался с переездом? По какому мануалу делали и как получилось?

https://dassur.ma/things/h2setup/ https://webapplog.com/http2-node/ пробовал, в частности, по этим рекомендациям\мануалам
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Во первых, http2 не используйте с традиционными сайтами, построенными под HTTPS 1.1, никакого бонуса фактические вы не ощутите. Проблема в том, что предзагрузка ресурсов может работать медленнее чем параллельная загрузка ресурсов по требованию, если вы заранее не спроектируете ваше приложение под http2. Во-вторых, http2 - формат бинарный, а не текстовый, у него есть лишь некоторая поддержка, и не для всех мобильных браузеров, в частности полная поддерджка осуществляется на связке chrome, и apache, однако не для всех платформ. В третьих, сертификат легче прописывать и автоматизировать его выписку с помощью настройки NGINX-а и бесплатного бота Let's Encrypt для NGINX. Да и переезд на https под NGINX сводится к элементарым операйциям, а ваш сайт как работал в http так пусть и работает, не надо его трогать. Меняйте конфиги у NGINX и пропишите все необходимое там, а если лень, то за вас это сделает бот Let's Encrypt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы