Vì vậy, tôi hiện có apache với một proxy vượt qua để chuyển hướng tất cả các yêu cầu đến một api cấp tốc đang chạy bằng cách sử dụng mô-đun nút http, Tôi cũng đã cài đặt chứng chỉ ssl letsencrypt và tất cả đều hoạt động tốt trên phần này. Tuy nhiên, khi tôi cố mở một kết nối websocket an toàn thì nó bị lỗi. Tôi chỉ có kinh nghiệm tối thiểu về cấu hình apache và cấu hình ssl, vì vậy vui lòng cho tôi biết.
Trên máy chủ của tôi:
máy chủ.ts
nhập * dưới dạng http từ 'http';
nhập * dưới dạng Websocket từ 'ws';
nhập * dưới dạng express từ 'express';
...
ứng dụng const = express();
máy chủ const = http.createServer(ứng dụng);
const wss = new Websocket.Server({ máy chủ, đường dẫn: '/ws' });
...
server.listen(3005, () => {
console.log('Máy chủ bắt đầu trên cổng 3005');
});
Trên trình duyệt:
index.js
const ws = WebSocket mới('wss://mydomain.tld/ws');
Và tệp cấu hình apache của tôi cho miền
mydomain.tld.conf
<VirtualHost *:443>
ServerName mydomain.tld
ProxyPreserveHost On
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:3005/ retry=0
ProxyPassReverse / http://127.0.0.1:3005/
RewriteEngine on
RewriteCond %{SERVER_NAME} =mydomain.tld
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Vì vậy, một lần nữa để nhanh chóng tổng hợp vấn đề, tôi có thể tạo các yêu cầu https được bảo mật ssl thành công chứ không phải các yêu cầu websocket tới máy chủ. Cảm ơn trước.