【问题标题】:node.js with ssl and static files serving带有 ssl 和静态文件的 node.js
【发布时间】:2017-04-05 17:20:09
【问题描述】:

当我添加 app.use(express.static(__dirname + '/public')) 文件正在从 https 常规服务器提供。 有人尝试过这样做吗?

//require engines
var express     = require('express');
var session     = require('express-session');
var bodyParser  = require('body-parser')

//init express engine
var app = express();

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

var activeport = process.env.PORT ? process.env.PORT : 4003;

if (process.env.NODE_ENV === "production") {

    var fs = require('fs');
    var https = require('https');

    var options = {
        key: fs.readFileSync(global.appRoot + '/xxx.pem'),
        cert: fs.readFileSync(global.appRoot + '/yyy.crt'),
        passphrase: "123123",
        requestCert: false,
        rejectUnauthorized: false
    };

    var server = https.createServer(options, app).listen(activeport, function () {
        console.log('Server listening on port ' + activeport);
    });
}
else {
    app.listen(activeport, function () {
        console.log('Server listening on port ' + activeport);
    });
}

【问题讨论】:

  • 您确定您处于生产模式吗?似乎您实际上可能在 else 块中

标签: javascript node.js ssl


【解决方案1】:

试试这个:

const path = require('path'); // <--- Require this
app.use(express.static(path.join(__dirname, '/dist')));

【讨论】:

    【解决方案2】:

    好的,知道了。 因为我使用 Azure 作为我的托管服务提供商,Azure 会为您提供所有 SSL 支持,所以我不需要创建专用的 https 服务器:

    var server = https.createServer(options, app).listen(activeport, function () {
        console.log('Server listening on port ' + activeport);
    });
    

    我需要做的就是在我的 web.config 中添加以下代码 - 永久重定向到 https url。

    <!-- Redirect all traffic to SSL -->
        <rule name="Force HTTPS" enabled="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
    

    推荐人: How do you force express on node.js in Azure Websites to use https?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2013-06-23
      • 2014-05-25
      • 2012-11-20
      • 2012-10-03
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多