netty-socketio 部署阿里雲使用localhost正常啓動,使用公網ip啓動失敗

背景:使用 netty-socketio 搭配前端的socket.io.js 做實時的系統通知。

netty-socketio的host屬性填寫localhost或本地ip都沒問題在本地測試運行正常。部署到阿里雲服務器上時,心想此時的host屬性值應爲該公網ip,這樣配置完後啓動就報錯了。。。

Caused by: java.net.BindException: Cannot assign requested address: bind

意思就是說配置的ip綁定失敗,心想這按理說是沒事的,應該是阿里雲做了什麼設置。

解決辦法:

      host屬性值變成阿里雲的內網ip,前端訪問時依舊使用外網ip,或是nginx反向代理也可以。
     ps:內網ip怎麼獲得?
    1、若你能登錄進雲服務器的Linux系統的話,使用 ifconfig 指令就可以獲取。
    2、若你能登錄阿里雲的雲服務器後臺管理的話,在 “實例” 裏面看到的私網ip就是了。

 

一個題外話:

以前用nginx做反向代理時,做了個這樣的配置:

   location ~ /api/ {
       proxy_pass http://114.215.144.30:9001;     #114.215.144.30 爲公網ip
    }

我當時覺得被代理的ip+端口,應該也能被直接訪問到,爲此還專門對外開放了9001,才能訪問通了。但是這樣nginx就起不到了保護被代理的服務器,隱藏真實ip和端口的作用了。但當時時間比較緊,就沒再管這個事。這次遇到了上面這個問題,思考了一下爲什麼內網ip就可以,又聯想了一下這個問題,頓時恍然大悟。反向思考一下,覺得這個反向代理時也可以使用內網ip,若成功了話,也不用在額外開放這個被代理的端口了,這樣纔是正確的反向代理。於是我試了一下,真的可以。






 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章