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/ пробовал, в частности, по этим рекомендациям\мануалам
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@virtual_hack2root
.NET Core порграммист, FullStack JS, DevOps
Во первых, http2 не используйте с традиционными сайтами, построенными под HTTPS 1.1, никакого бонуса фактические вы не ощутите. Проблема в том, что предзагрузка ресурсов может работать медленнее чем параллельная загрузка ресурсов по требованию, если вы заранее не спроектируете ваше приложение под http2. Во-вторых, http2 - формат бинарный, а не текстовый, у него есть лишь некоторая поддержка, и не для всех мобильных браузеров, в частности полная поддерджка осуществляется на связке chrome, и apache, однако не для всех платформ. В третьих, сертификат легче прописывать и автоматизировать его выписку с помощью настройки NGINX-а и бесплатного бота Let's Encrypt для NGINX. Да и переезд на https под NGINX сводится к элементарым операйциям, а ваш сайт как работал в http так пусть и работает, не надо его трогать. Меняйте конфиги у NGINX и пропишите все необходимое там, а если лень, то за вас это сделает бот Let's Encrypt
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 200 000 до 300 000 руб.
Cindx Москва
от 130 000 до 180 000 руб.
Reelmotion Games Санкт-Петербург
от 45 000 до 75 000 руб.