NodeJS Субдомен с vhost и greenlock-express - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок в Node и хочу, чтобы мой сайт, dacio.app , работал с поддоменами для моих проектов в колледже, используя vhost .

Однако янеобходимо обеспечить его безопасность из-за требования к доменам .app, поэтому я использую greenlock-express для его автоматизации.

Не будь frontin ', эй!TLS SNI 'giphy.dacio.app' не соответствует 'Хосту: potato.dacio.app'

Я пытался использовать пример vhost в репо , но это не похоже на server-static поддерживает express приложения.


Какие-нибудь советы о том, как заставить это работать?Я продолжаю слышать об обратных прокси, но я не уверен, стоит ли это усилий, поскольку я даже не знаю, сработает ли это - поможет ли это?

server.js

#!/usr/bin/env node
'use strict';

// DEPENDENCIES
const express = require('express');
const vhost   = require('vhost');
const path    = require('path');
const glx     = require('greenlock-express');

// MIDDLEWARE
const app = express();
const giphyApp = require('../giphy-search');
const potatoesApp = require('../rotten-potatoes');
const portfolioApp = require('../dacio.app');

// ROUTES
app.use(vhost('giphy.dacio.app', giphyApp));
app.use(vhost('potatoes.dacio.app', potatoesApp));
app.use(portfolioApp);

// GREENLOCK for HTTPS
glx.create({
    version: 'draft-11',
    server: 'https://acme-v02.api.letsencrypt.org/directory',
    email: 'dacioromero@gmail.com',
    agreeTos: true,
    approveDomains: [ 'dacio.app', 'giphy.dacio.app', 'potatoes.dacio.app' ],
    configDir: '~/.config/acme/',
    app: app,
    communityMember: false
}).listen(80, 443);

1 Ответ

0 голосов
/ 20 сентября 2018

Я перешел на использование redbird , которое, кажется, выполняет все, что я надеялся сделать.

const path = require('path')

const proxy = require('redbird')({
    port: 80,
    letsencrypt: {
        path: path.join(__dirname, '/certs'),
        port: 9999
    },
    ssl: {
        http2: true,
        port: 443
    }
});

proxy.register('dacio.app', 'http://localhost:8080', {
    ssl: {
        letsencrypt: {
            email: 'dacioromero@gmail.com',
            production: true,
        }
    }
});

proxy.register('giphy.dacio.app', 'http://localhost:8081', {
    ssl: {
        letsencrypt: {
            email: 'dacioromero@gmail.com',
            production: true
        }
    }
})

proxy.register('potatoes.dacio.app', 'http://localhost:8082', {
    ssl: {
        letsencrypt: {
            email: 'dacioromero@gmail.com',
            production: true
        }
    }
});
...