ดังนั้นตอนนี้ฉันจึงมี apache พร้อม proxy pass ซึ่งเปลี่ยนเส้นทางคำขอทั้งหมดไปยัง express api ที่กำลังใช้งานอยู่ โมดูลโหนด httpฉันยังได้ติดตั้งใบรับรอง ssl ของ letsencrypt และทุกอย่างทำงานได้ดีในส่วนนี้ อย่างไรก็ตาม เมื่อฉันพยายามเปิดการเชื่อมต่อเว็บซ็อกเก็ตที่ปลอดภัย เกิดข้อผิดพลาด ฉันมีประสบการณ์ขั้นต่ำเพียงเล็กน้อยเท่าที่การกำหนดค่า apache และการกำหนดค่า ssl ดำเนินไปดังนั้นโปรดใช้ฉันด้วย
บนเซิร์ฟเวอร์ของฉัน:
เซิร์ฟเวอร์.ts
นำเข้า * เป็น http จาก 'http';
นำเข้า * เป็น Websocket จาก 'ws';
นำเข้า * ด่วนจาก 'ด่วน';
...
แอพ const = ด่วน ();
เซิร์ฟเวอร์ const = http.createServer (แอป);
const wss = websocket.Server ใหม่ ({ เซิร์ฟเวอร์ เส้นทาง: '/ws' });
...
server.listen(3005, () => {
console.log('เซิร์ฟเวอร์เริ่มต้นที่พอร์ต 3005');
});
บนเบราว์เซอร์:
index.js
const ws = WebSocket ใหม่ ('wss://mydomain.tld/ws');
และไฟล์กำหนดค่า apache ของฉันสำหรับโดเมน
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>
ดังนั้นอีกครั้งเพื่อสรุปปัญหาอย่างรวดเร็ว ฉันสามารถสร้างคำขอ ssl secured https ที่สำเร็จแต่สร้างคำขอ websocket ไปยังเซิร์ฟเวอร์ไม่ได้ ขอบคุณล่วงหน้า.