[英]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.