如何在443中为apache AND节点配置https支持?

时间:2018-01-24 18:13:59

标签: node.js apache ssl https reverse-proxy

实际状态:

http://www.example.com/mypage apache http:好的!
  https://www.example.com/mypage apache https:好的!

http://www.example.com:8000 节点http:好的!
  https://www.example.com:8000 节点https:无效(仍然)

我尝试将节点程序修改为

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

var server = http.createServer(app);

https.createServer({ 
        key: fs.readFileSync("/etc/letsencrypt/live/www.example.com/privkey.pem"),
        cert: fs.readFileSync("/etc/letsencrypt/live/www.example.com/fullchain.pem"),
        ca: fs.readFileSync("/etc/letsencrypt/live/www.example.com/chain.pem")
}, app).listen(443);

这里显而易见的问题是apache已经听到端口443,然后是

Error: listen EADDRINUSE :::443

有没有办法使用Apache 443为节点提供SSL?

4 个答案:

答案 0 :(得分:5)

您只能将一个进程绑定到服务器上的给定端口。

也就是说,正确这样做的方法是让Apache监听443,然后使用mod_proxy将流量转发到nodejs上的HTTP端口(不是w / SSL,但是你&# 39;只能通过localhost进行通信)或在unix套接字上进行通信。

如何使用端口80 / HTTP执行此操作的一个很好的示例如下:http://blog.podrezo.com/making-node-js-work-with-apache/

<footer class"footer">
    //content
</footer>


.footer {
    position: absolute;
    bottom: 0;
}

但是如果将Proxy *行添加到现有的HTTPS端点,理论是相同的。

答案 1 :(得分:1)

您的节点HTTPS服务器可以在任何端口上运行 - 假设9090而不是您设置的443。使用Apache将https://example.com中的任何流量重定向到侦听9090的节点https服务器。

查看apache反向代理以获取有关如何设置它的更多信息:)

答案 2 :(得分:0)

要在端口443上运行两个服务器Apache和node.js,常见的解决方案是使用反向代理。

Apache可以配置为使用mod_proxy,nodejs也有代理配置,并且有专门用于此工作的外部程序。

我建议使用haproxy来侦听端口80和443,并制定必要的规则以将请求转发到您选择的服务器。 然后,apache可以在6080和6443上收听,节点可以在8080和8443上收听。

这样,apache和nodejs可以相当不受影响 - 除了修改监听端口 - 并且haproxy是透明的,并且具有访问控制列表的灵活性。您可以将ssl用于所有* 443端口。

答案 3 :(得分:0)

实际上,无需在节点服务器中导入SSL文件或密钥。 (按照我的步骤在SSL中同时运行apache和节点服务器)。希望您已经在 Apache 服务器

中配置了SSL

节点(快速)

const express = require('express');
const app = express();
var cors = require('cors')
app.use(cors());
var server = require('http').createServer(app);

在服务器中打开 httpd.conf 并根据需要添加 ProxyPass

ProxyPass /api/ http://localhost:3000/

不要担心重新启动HTTP服务

http://www.example.com/mypage阿帕奇http:好!

https://www.example.com/mypage Apache https:好的!

http://www.example.com/api/节点http:好!

https://www.example.com/api/节点https:IT工作!!!