關於nginx轉寄的一個問題

來源:互聯網
上載者:User

        公司網站採用 nginx + apache + tomcat + db + nfs 的架構,即前端 nginx 進行 upstream 轉寄,交給後端的 apache 和 tomcat 進行處理,兩個一靜一動,各司其職。db 採用主從讀寫分離,各後端伺服器 mount 掛載 nfs 上的某圖片路徑,用於共用運營上傳上來的圖片資訊。

        今天客服反映說很多公司的圖片都看不到了,但是單獨指定IP的話可以訪問。

        指定單獨的IP可以訪問,但是走 nginx 就不行,可以基本判定 nfs 沒有問題,於是排查 nginx 錯誤,在 nfs 上查到的 nginx 轉寄圖片的配置為:

        location ~ /p/ {
                        expires                 -1;
                        rewrite ^/p/(.*)         /picture/c/$1 break;
                }

      查看 nginx 錯誤記錄檔,tail -f ng_err.log | grep '421965.jpg'  報如下錯誤,/opt/data/picture/c/logo/0/421/421965.jpg  現在發現,在 nginx 所做的轉寄是攔截 /p 的請求轉寄至 /picture/c , 而進入 /opt/data/picture 目錄看,發現 logo 和 c 是同級檔案夾,並且
c 下根本就不存在 logo 檔案夾,判斷了問題所在,提出了以下兩種解決方案

     1. 通知研發在代碼層修改,將圖片存取路徑改為正確的,經反饋該代碼代價太大,只好採取第二種方法了。

     2. 修改 nginx 配置,將
rewrite ^/p/(.*)         /picture/c/$1 break;  改為 
rewrite ^/p/(.*)         /picture/$1 break; 

     在此測試,找到了圖片,問題解決。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.