docker nginx部署.net core后端站點和angular前端站點


首先聲明,服務器是linux 版本是ubuntu server 18.04,不是windows server。windows server 2016放棄治療了,2019可能會有改善,不過雲廠商的公共鏡像並沒有。windows container折騰死人啊.

 

 

架構如上圖所示,.net core應用通過docker運行,監聽11101端口,不對外部開放。

angular應用通過nginx 鏡像運行,監聽11102端口,不對外部開放。

主nginx容器監聽某個域名80端口,配置端口轉發至11101,監聽另一個域名的80端口,配置端口轉發至11102。

這樣對於外部來說就像是直接通過那兩個域名進行訪問一樣。

三個容器運行情況如下所示,.net core應用容器監聽11101端口,ng應用容器監聽11102端口,nginx容器監聽80和443端口

 

 

 nginx的配置如下。

 

用的是華為雲的CES,有個小坑,就是localhost總是用不了,得用局域網IP, 我這里配置的就是192.168.1.122這里除了轉發請求外還有兩個點需要注意,Abp.TenantId請求頭中有小數點.對於nginx來說是非法的請求頭,默認是會被過濾掉的,所以需要手動配置關閉過濾,也就是圖中的

ignore_invalid_headers off;  

說實話被這個坑困擾了好久,最終還是在abp的github issues中找到了。

 

還有另一個就是url rewrite的問題,之前部署在iis是安裝了iis 的rewrite模塊,但在nginx中url rewrite是重定向配置,也是找了好久才找到是url和文件路徑匹配。解決這個問題需要修改前端站點的nginx配置

加上標記的那行,表示url和文件路徑匹配。

后兩行是設定index所在路徑。

 

這樣配置的效果就是http請求轉發到了前端ng站點,https的請求轉發到了.net core的webapi站點。

 

前端站點每個容器都要進去修改nginx配置文件也很麻煩,既然如此,那當然是改nginx鏡像啦。下一篇見。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM