[英]How to configure https support in 443 for apache AND node?
实际状态:
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?
您只能将一个进程绑定到服务器上的给定端口。
也就是说,执行此操作的正确方法是让 Apache 侦听 443,然后使用 mod_proxy 将流量转发到 HTTP 端口上的 nodejs(不带 SSL,但您只是在 localhost 上交谈)或在 unix 上插座。
如何使用端口 80/HTTP 做到这一点的一个很好的例子在这里: http : //blog.podrezo.com/making-node-js-work-with-apache/
<VirtualHost *:80>
ServerName pastebin.mydomain.com
ServerAlias www.pastebin.mydomain.com
DocumentRoot /var/www/pastebinjs/
Options -Indexes
ErrorDocument 503 /maintenance.html
ProxyRequests on
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8000/
</VirtualHost>
但是,如果您将 Proxy* 行添加到现有 HTTPS 端点,则理论是相同的。
您的节点 HTTPS 服务器可以在任何端口上运行 - 假设是 9090 而不是您设置的 443。 使用 Apache 将https://example.com 中的任何流量重定向到侦听 9090 的节点 https 服务器。
查看 apache 反向代理以获取有关如何设置的更多信息:)
要在端口 443 上提供两台服务器,Apache 和 node.js,常见的解决方案是使用反向代理。
Apache 可以配置使用 mod_proxy,nodejs 也有代理配置,并且有专门用于这个工作的外部程序。
我建议使用 haproxy,侦听端口 80 和 443,并制定必要的规则将请求转发到您选择的服务器。 然后,例如 apache 可以监听 6080 和 6443,node 可以监听 8080 和 8443。
这样一来,apache 和 nodejs 就可以保持不变——除了修改监听端口——而且 haproxy 对访问控制列表是透明和灵活的。 您可以将 ssl 用于所有 *443 端口。
实际上不需要在节点服务器中导入 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 apache http:好的!
https://www.example.com/mypage apache https:好的!
http://www.example.com/api/节点 http:好的!
https://www.example.com/api/节点 https: IT WORKKS !!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.