Nginx實(shí)現(xiàn)多域名反向代理轉(zhuǎn)發(fā)到不同項(xiàng)目的配置
2022-12-04 加入收藏
Nginx的反向代理,即可以基于端口進(jìn)行,也可以基于域名進(jìn)行。
過多的端口開放,就意味著更高的安全風(fēng)險(xiǎn),因此只開放一個(gè)端口,比如80端口,然后根據(jù)域名的不同轉(zhuǎn)發(fā)到不同的項(xiàng)目路徑或服務(wù)器。
nginx的配置文件結(jié)構(gòu)就不多說了。
由于測試服務(wù)器較少,項(xiàng)目又較多,很多項(xiàng)目都在同一個(gè)服務(wù)器上,并且服務(wù)器并沒有綁定域名,只有IP可以使用。在訪問不同項(xiàng)目時(shí)用nginx做代理就意味著要有不同的路由地址和接口來區(qū)分不同的項(xiàng)目。其實(shí)在測試服務(wù)器上也是可以使用域名來做代理的。
例:配置一個(gè)網(wǎng)址為:www.qianduan.qa/road;接口地址為www.ceshi.qa的項(xiàng)目,程序運(yùn)行在服務(wù)器的88端口。
接口地址的配置:
打開nginx新建文件夾vhosts,新建配置文件:ceshi.conf
2. 寫一個(gè)server:端口80,server_name填寫域名,可以是虛擬的不存在的;location里的內(nèi)容就是需要代理的應(yīng)用程序。
location /{}:訪問www.ceshi.qa時(shí),會轉(zhuǎn)發(fā)到服務(wù)器88端口上啟動(dòng)的應(yīng)用程序。
如果是不存在的域名那么需要在本地的hosts添加:
服務(wù)器IP www.ceshi.qa
前端地址的配置
新建qianduan.conf文件到vhosts文件夾下
寫一個(gè)server,server_name填寫:www.qianduan.qa,端口也是80,www.qianduan.qa這個(gè)域名已經(jīng)添加到本地的hosts中。
所有訪問www.qianduan.qa這個(gè)請求的都會被轉(zhuǎn)到www文件夾下,www.qianduan.qa/road則是訪問www/road文件夾下的前端資源,前端代碼中接口就連接www.ceshi.qa(不同項(xiàng)目連接各自的項(xiàng)目接口地址即可)
同理:如果想要訪問mob文件夾里的資源,地址則是:www.qianduan.qa/mob;接口連接mob這個(gè)項(xiàng)目對應(yīng)的后臺接口地址即可。
使子conf生效
回到conf文件夾,打開nginx.conf,將新建的ceshi.conf和qianudan.conf添加進(jìn)去(*.conf將所有以.conf結(jié)尾的文件都添加到nginx.conf)
2. 保存配置重啟nginx就成功了。由于這個(gè)域名并不存在,如果別人想要訪問的話也需要配置這兩個(gè)域名哦。
3. 多說無益,自己操作一遍最好。
問題一:本地的hosts在哪里?
答:C:\Windows\System32\drivers\etc\hosts文件以管理員身份打開。
問題二:為何域名配置了不可訪問?
答:確認(rèn)域名是否真實(shí)有效;若是不存在的域名需在本地的hosts將域名添加進(jìn)去
問題三:前端資源可以不放在nginx里嗎?
答:當(dāng)然可以,放在各自的應(yīng)用程序里的靜態(tài)資源文件夾下也可以;以上例子中后臺是.net寫的;項(xiàng)目中有一個(gè)文件夾wwwroot,可以存放靜態(tài)資源,如果將此項(xiàng)目的前端資源放在wwwroot下,那么訪問此項(xiàng)目時(shí)網(wǎng)址就是www.ceshi.qa。
問題三:用IP如何配置此例子?
答:訪問時(shí)地址就是服務(wù)器IP/road(XXX.XXX.XXX.XX/road);接口地址就連:服務(wù)器IP/api/v1(XXX.XXX.XXX.XX/api/v1)