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