Server

8. 1. 2021 11:20 Pan Martin

Testovací server běží v malé instanci AWS Lightsail. Běží na Node.js / express.

Osvědčily se mi moduly:

  • express-static-gzip, který umí posílat statické soubory zaGZIPované / zaBrotliované (index.html, index.html.gz, index.html.br). Parcel, kterými generuju aplikace, má plugin, který to takto bundluje
  • greenlock. Naprosto esenciální věc pro https, řeší to na pozadí veškerou péči o LetsEncrypt.
  • cookie-session
  • passport a passport-google-oauth20
  • cors

Virtuály řeším middleware funkcí vhost:

const vhost = (hostname, server) => {
    if (!hostname) throw new Error('vhost hostname required');
    if (!server) throw new Error('vhost server required');
    var regexp = new RegExp('^' + hostname.replace(/[^*\w]/g, '\\$&').replace(/[*]/g, '(?:.*?)') + '$', 'i');
    if (server.onvhost) server.onvhost(hostname);
    return function vhost(req, res, next) {
        if (!req.headers.host) return next();
        var host = req.headers.host.split(':')[0];
        if (!regexp.test(host)) return next();
        if ('function' == typeof server) return server(req, res, next);
        server.emit('request', req, res);
    };
};

Použití je prosté: 

app.use(vhost("myweb.cz", expressStaticGzip("./myweb/", {
    enableBrotli: true,
    orderPreference: ["br", "gz"]
})))

Budu průběžně doplňovat…

Sdílet