首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >compoundjs支持ssl和普通http。

compoundjs支持ssl和普通http。
EN

Stack Overflow用户
提问于 2014-10-27 09:05:10
回答 1查看 44关注 0票数 0

在某些情况下我需要在我的网站上使用SSL,

我遵循了自述中的例子

代码语言:javascript
复制
require('compound').createServer({
    key: fs.readFileSync('/tmp/tls.key').toString(),
    cert: fs.readFileSync('/tmp/tls.cert').toString()
});

我的server.js是

代码语言:javascript
复制
#!/usr/bin/env node
var fs = require('fs');
/**
 * Server module exports method returning new instance of app.
 *
 * @param {Object} params - compound/express webserver initialization params.
 * @returns CompoundJS powered express webserver
 */
var app = module.exports = function getServerInstance(params) {
    params = params || {};
    // specify current dir as default root of server
    params.root = params.root || __dirname;
    params["key"] = fs.readFileSync('/tmp/tls.key').toString();
    params["cert"] =  fs.readFileSync('/tmp/tls.cert').toString();
    return require('compound').createServer(params);
};

if (!module.parent) {
    var port = process.env.PORT || 3000;
    var host = process.env.HOST || '0.0.0.0';

    var server = app();
    server.listen(port, host, function () {
        console.log(
            'Compound server listening on %s:%d within %s environment',
            host, port, server.set('env')
        );
    });
}

现在的问题是,我不能得到http,只有https。如果我将cert和key放在config文件夹中,并将

代码语言:javascript
复制
**var app = module.exports = function getServerInstance(params) {
    params = params || {};
    // specify current dir as default root of server
    params.root = params.root || __dirname;
    return require('compound').createServer(params);
};**

然后我得到了一些错误

代码语言:javascript
复制
config/tls.cert:1
tion (exports, require, module, __filename, __dirname) { -----BEGIN CERTIFICAT
                                                                    ^^^^^^^^^^^
SyntaxError: Unexpected identifier
    at Module._compile (module.js:439:25)

获得复合is以支持https和http路由的最快和最简单的方法是什么,我是否需要有两个服务器(就像您经常使用直接快递一样)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-19 07:34:56

是的-需要有两台服务器,就像你用特快专递一样。所以

代码语言:javascript
复制
var app = module.exports = function getServerInstance(params) {
    params = params || {};
    // specify current dir as default root of server
    params.root = params.root || __dirname;    
    return require('compound').createServer(params);
};


var port = process.env.PORT || 80;
var host = process.env.HOST || '0.0.0.0';
var port_https = 443;

var server = app();


server.listen(port, host, function () {
    server.set("confvar", process.env.SERVER_NAME);
    console.log(
        'Compound server listening on %s:%d within %s environment',
        host, port, server.set('env')
    );
});

 if(fs.existsSync(PATH TO KEY GOES HERE)){
    var apphttps = module.exports = function getServerInstance(params) {
        params = params || {};
        // specify current dir as default root of server
        params.root = params.root || __dirname;    
        params.key = fs.readFileSync(PATH TO KEY GOES HERE).toString();
        params.cert = fs.readFileSync(PATH TO CERT GOES HERE).toString();
        return require('compound').createServer(params);
    };
    var serverhttps = apphttps();

    serverhttps.listen(port_https, host, function () {
        serverhttps.set("confvar", process.env.SERVER_NAME);
        console.log(
            'Compound https server listening on %s:%d within %s environment',
            host, port_https, serverhttps.set('env')
        );
    });
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26584115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档