【问题标题】:http to a Node server over https nginx website通过 https nginx 网站 http 到节点服务器
【发布时间】:2017-01-18 07:00:45
【问题描述】:

是否可以通过通常由 https 保护的网站与 node.js 服务器建立 http 连接?

您如何建议将节点连接与在 https 上运行的网站相结合。

【问题讨论】:

  • 您是说您希望 https://yoursite.com 由 nginx 处理,http://yoursite.com 由 Node 处理?
  • 不,我的网站在example.com,但在这个网站内部有一个聊天功能,即在端口 3000 上的 node.js http 上,但我意识到网站在 https 上会中断连接到 node.js ...
  • 这是什么“破”?这是一个CORS吗?因为通常 CORS 会禁止调用另一个端口(443 到 3000)。
  • 不,浏览器应该阻止所有不安全的请求而无需更改配置
  • 我不知道 CORS 是什么,你们有什么建议?

标签: javascript node.js http ssl https


【解决方案1】:

正如 cmets 中已经提到的,为您的 node.js 应用程序创建代理很有用。 例如,一个很好的教程来自 DigitalOcean:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04

在本教程中,它显示主机配置可以如下所示:

server {
    listen 80;

    server_name example.com;

    location / {
        proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

在这种情况下,创建了端口 8080 的反向代理。通常,此方法可用于每个 node.js 应用程序。

在您的情况下:在您的 https 服务器块中添加位置块并修改路由。

【讨论】:

    【解决方案2】:

    node-http-server 刚刚添加了对 https 的支持,它可以同时启动 http 和 https 服务器。它还有一些您可以使用的测试证书和一个用于自签名的证书生成指南。

    请注意,如果您想在端口 80 和 443 上启动,您需要使用 sudo 运行

    在 http 和 https 上运行相同代码的示例:

    var server=require('node-http-server');
    
    server.deploy(
        {
            port:8000,
            root:'~/myApp/',
            https:{
                privateKey:`/path/to/your/certs/private/server.key`,
                certificate:`/path/to/your/certs/server.pub`,
                port:4433
            }
        }
    );
    

    它超级简单,有很好的documentation 和示例文件夹中的几个示例。

    【讨论】:

    • 感谢您的关注。
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2010-10-19
    • 2019-02-09
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多