我的目標是將 io 從我的公共服務器連接到我的私人服務器,
const socket = io("10.0.2.50:3001") 這兩者都連接到我的 vpc。私有服務器有我的應用程式的套接字/服務器代碼,公共服務器顯示前端。我希望用戶能夠鏈接到/連接到私有子網上的其他私有服務器。
我有一個基本的 aws vpc 設定 -
- 具有公共子網和私有子網的 vpc
- 一臺連接到公共子網的服務器,該服務器通過公共路由表和 Internet 網關連接到公共 Internet。這是在運行@ public ip xxxx:3000 private ip 10.0.1.50:3000
- 我可以通過位于 10.0.2.50:3001 的公共服務器的私有路由表連接到一臺私有服務器
什么作業 -
- 我可以訪問面向公眾的服務器并查看前端資產加載,但它永遠不會連接。
- 當我在公共服務器中 sshed 時,我可以卷曲私人服務器 - curl 10.0.2.50:3001。
- 我可以連接到公共 IP 上私人服務器的公共克隆。這確認代碼對于連接是正確的。
const socket = io("x.x.x.x:3001") - 如果我設定 nginx 反向 proxy_pass = http:10.0.2.50:3001; 它有效,我有一個用于除錯服務器端代碼的測驗頁面設定
- 我已經測驗了套接字 io cors 檔案中提到的 cors - curl "http://10.0.2.50:3001/socket.io/?EIO=4&transport=polling" 并給出了預期的結果。為了測驗,我有一個附加到私人服務器的開放 cors 策略。
- 我已經讓我的安全設定非常開放以供測驗。他們中的大多數人都開放了入站和出站。
我的感覺是在 vpc 中連接到私有服務器是一個套接字 io 限制,但我不確定為什么會這樣,并且很好奇是否有解決方法。
提前致謝
uj5u.com熱心網友回復:
“我的感覺是在 vpc 中連接到私有服務器是一個套接字 io 限制”
不,這就是網路的作業方式。您的前端代碼在筆記本電腦的 Web 瀏覽器中運行,而不是在 VPC 中。您的筆記本電腦不在 VPC 內。您的筆記本電腦只能連接到您的 VPC 中的公共資源,它不能連接到您的 VPC 中的私有資源。這就是公共和私有 VPC 資源的定義。
要使 Socket.IO 連接在公共 Internet 上的 Web 瀏覽器和您的后端服務器之間作業,這些服務器必須位于公共子網中并具有公共 IP 地址,或者必須通過公共服務器或公共服務器代理流量負載均衡器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/444635.html
