nginx反向代理 使用多個(gè)location url 匹配到不同主機(jī)的不同服務(wù),出現(xiàn)404問(wèn)題
問(wèn)題描述
現(xiàn)有兩個(gè)服務(wù)應(yīng)用地址:192.168.5.20:5080 jenkins192.168.5.20:2080 gitlab
想在192.168.0.161(另外一臺(tái)機(jī)器)上部署nginx反向代理,配置兩個(gè)location,分別指向以上兩個(gè)地址,但總會(huì)出現(xiàn)404錯(cuò)誤。
如下配置:
現(xiàn)象:從瀏覽器訪問(wèn):192.168.5.161/jenkins時(shí):瀏覽器地址欄變?yōu)?192.168.5.161/login?from=%2F頁(yè)面顯示404
目的:訪問(wèn)192.168.5.161/jenkins時(shí),瀏覽器url地址不變,頁(yè)面被轉(zhuǎn)發(fā)到192.168.5.20:5080,即jenkins所在的服務(wù)上。請(qǐng)問(wèn)改如何改配置呢?
問(wèn)題解答
回答1:如果你的 Jenkins / GitLab 不支持配置成在 URL 路徑里加個(gè)東西的話,那么不要再這樣嘗試了。nginx 可以做到重定向重寫(xiě),但是網(wǎng)頁(yè)里還可能會(huì)有絕對(duì)路徑的鏈接。就算你把網(wǎng)頁(yè)都重寫(xiě)了,網(wǎng)頁(yè)還是可能通過(guò) JavaScript 構(gòu)造成錯(cuò)誤的鏈接。
你可以配置兩個(gè)域名(vhosts),分別用來(lái)提供不同的服務(wù)。
