現客戶在一臺物理機上部署了多套系統,須要實現每套系統都有一個獨立訪問域名,不能帶端口。以前的方案就是經過context root
進行路由,好比A系統訪問路徑爲 http://definesys.com/A
B系統的訪問路徑爲 http://definesys.com/B
,這樣有兩個問題html
context root
,對於系統的推廣很不利,不容易記,也不美觀。以上的方案是基於context root作路由,若是可以基於Host
作路由,就解決了以上問題,什麼意思呢?訪問A系統域名爲 http://A.defiensys.com
,訪問B系統的域名爲http://B.definesys.com
,後臺代理經過http的Host字段進行路由。肯定方案後,選擇了Nginx做爲反向代理服務器,下面介紹相關配置。前端
假設有兩套系統,OA和HR,須要配置的訪問域名分別爲 http://oa.definesys.com
和 http://hr.definesys.com
,修改 nginx.conf
,增長如下配置項nginx
upstream oa.definesys.com{ server 192.168.1.10:8080; } upstream hr.definesys.com{ server 192.168.1.10:8081; }
這兩個域名須要在DNS中配置好,本地能夠修改hosts文件進行測試。服務器
修改 conf.d/default.conf
增長路由配置,固然你能夠能夠在conf.d目錄下新建一個 *.conf 文件,nginx會默認引用該目錄下全部.conf後綴的文件做爲配置項。測試
location / { proxy_pass http://$host; index index.html index.htm; }
$host
表示http頭上的Host字段,只要保證上游服務器名稱和訪問的域名一致便可。代理