關於nginx靜態代理的指定目錄匹配方式的測試


今天在b站看nginx的靜態代理的視頻的時候,經過測試,發現老師對第二種:nginx根據目錄來查找靜態資源的講解不太對,所以特別記錄一下這個問題,視頻地址:https://www.bilibili.com/video/BV1Yb411p7wT?p=24

nginx靜態代理的兩種方式是:

 

 第一種是文件名后綴匹配沒有問題,第二種指定目錄匹配,從測試的結果來看,老師講解的有點問題,老師說:任意目錄下的css、js、img、images、image的靜態資源匹配都會轉發到其下面的:http://static.myweb.com這個地址

注意,圖片中的image目錄是我后面加上的。這里要說明一下我測試的web工程的目錄結構,這個工程為:myweb的war包,其目錄結構為:

 

 這個web工程很簡單,就是一個index.jsp頁面,以及頁面中用到的一張圖片,整個頁面的內容如下:

再說回來,老師講解的問題,這個web工程的index.jsp的圖片的所在的目錄為:image/001.jpg。前面也說了,指定目錄的image是我后面加上去的,原來應該是這樣的:

 

 但是,前面也說了,web項目的圖片的訪問的路徑如下圖所示:

 

 但是指定目錄下只有一個images目錄,能匹配到image目錄下的文件嗎?老師說是可以的,說只要前面的部分字符能匹配上即可。但是測試結果並非如此,接下來開始測試過程:

這里我開了兩台處理靜態資源的nginx,端口號分別為:81和82,還有一台負責負載均衡的nginx,端口號為80,其nginx.conf的配置如下圖所示:

 

 

 

 

 

 在啟動這三台nginx之前,已經將myweb的war包放到了端口號為9100的tomcat中,並且將其myweb工程下的image文件夾刪除了,並將image文件夾移動到了root目錄下,也就是opt/static下的myweb的文件夾里,下圖是訪問tomcat的myweb工程,如下圖所示:

可以看到,nginx沒啟動之前圖片是加載不出來的,接下來分別啟動三台nginx,如下圖所示:

 

 接下來,開始訪問負責負載均衡的端口號為80的nginx,如下圖所示,在刪除瀏覽器緩存的情況下,刷新了幾次,圖片還是刷不出來:

這個時候,我以為我的root目錄的opt/static的圖片不存在,就去看了一下,發現確實是存在的,如下圖所示:

 

 按照老師說的,這里不應該圖片加載不出來,說明應該是文件夾的路徑不對,因此,我在conf文件中加上了image這個精准的文件夾,如下圖所示:

 

 

 

 

 

 重啟三台nginx服務器使配置文件生效,再次訪問負責負載均衡的nginx服務器,這個時候,圖片加載出來了,刪除瀏覽的緩存又刷新了一次頁面,圖片還在,說明配置確實生效了:

 

 測試的結果說明:nginx按照目錄進行靜態資源的代理的時候,是需要精准匹配文件夾名的,而不是老師說的模糊匹配!第一中的按照靜態資源的后綴名的話是沒有問題的,因此在學習的時候,也要有自己的思考,要持有懷疑的態度去學習。


免責聲明!

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



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