衆所周知node是一個高性能的web伺服器,使用它可以很簡單的建立一個http或https的伺服器。
比如一個很簡單的http伺服器:
從上文我們可以看出,node生成的每個伺服器必須配置設定一個端口。那麼如果我們在工作中遇到一個需求:讓同一個端口或位址既支援http協定又支援https協定,這時候我們該怎麼辦,有的同學很可能想到用nginx做反向代理,這不失為一個解決方案,但這也同樣意味着增加了産品的複雜度,使用者并不想去折騰ngnix。
辦法是有的,原理就要搬出osi的七層模型:
http與https都屬于應用層協定,是以隻要我們<code>在底層協定中進行反向代理</code>,就可以解決這個問題! 剛好node可以讓我們很友善的建立一個tcp伺服器!
是以我們的核心代碼如下: