【问题标题】:https on node.js server running on port 3000在端口 3000 上运行的 node.js 服务器上的 https
【发布时间】:2016-01-17 09:52:00
【问题描述】:

所以我有一个像 http://someIp:3000 这样的 node.js 服务器。是否可以在此安装 https 而无需获取域名并在端口 80 上运行?我问这个问题的原因是我有一个在 https 上运行的 php 网站,当我尝试与我的节点服务器通信时,它抱怨你请求了一个不安全的 XMLHttpRequest 端点。

【问题讨论】:

    标签: node.js ssl express https


    【解决方案1】:

    是的:

    var fs = require('fs');
    var https = require('https');
    var express = require('express');
    var socket = require('socket.io');
    var storage = require('node-persist');
    var port = 8443;
    
    var sslOptions = {
      pfx: fs.readFileSync('cert/cert.pfx'),
         passphrase: "Node2015"
    };
    
    var app = express();
    
    app.all('/*', function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
      res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *');
      next();
    });
    
    var server = https.createServer(sslOptions, app);
    

    【讨论】:

    • cert.pfx 是定制的吗?因为我知道godaddy 不会让你在ip:3000 上获得ssl。我的 php 服务器正在使用经过验证的 ssl
    • 是的。它是定制的。您应该也可以使用经过验证的 ssl 证书!
    • 有 2 台不同的服务器,所以我不能同时使用经过验证的服务器。另外我不认为定制的 ssl 是可以接受的,但我会尝试
    【解决方案2】:

    您应该配置运行 PHP 的网络服务器以使用反向代理连接到您的 NodeJS 服务器(然后两者都可以通过相同的主机名和端口访问)或使用正确的 CORS 标头配置 NodeJS。

    我认为在您的场景中,反向代理会更容易配置。将 NodeJS 配置为仅允许 localhost https 连接,然后将您的 Apache 配置为代理传入的请求。

    【讨论】:

    • 你有什么例子吗?我对此很陌生
    • “apache 反向代理”的搜索堆栈溢出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2013-10-18
    • 2021-03-01
    • 2019-05-26
    • 2017-09-21
    • 2015-04-26
    相关资源
    最近更新 更多