2017-03-03 54 views
0

我有一個Django網站,它在單獨的文件服務器上使用Nginx來提供我的用戶上傳的圖像。當任何用戶查看其他用戶的照片,鏈接到的照片都會有這樣的結構:如何處理不完整的Django/Nginx文件服務器URL?

https://fs01.mysite.com/media/photos/<username>_<photo-id>.jpg 

當頁面呈現,用戶的照片是由文件服務器(FS)擔任了。但是,對於上面的URL的子目錄,Nginx處理不完整的方式(也可以說不正確)的方式是什麼?例如,如果用戶輸入此URL:

https://fs01.mysite.com 

...他們看到Nginx的默認「歡迎使用nginx on ...」頁面。如果他們輸入這個網址:

https://fs01.mysite.com/media 

......他們會得到Nginx的「404 Not Found」頁面。如果他們輸入這個網址:

https://fs01.mysite.com/media/photos 

......他們會得到Nginx的「403 Forbidden」頁面。

你如何處理Nginx的這些情況?

回答

0
  1. 他們看到歡迎頁面,因爲nginx匹配默認虛擬主機條目而不是你的。您應該刪除默認的(/etc/nginx/conf.d/default/etc/nginx/sites-enabled/default,具體取決於您使用的Linux發行版),並確保server_name行與您的url匹配(即末尾沒有斜槓)。

  2. 看起來像你的location block matckes只有media/(與最後的斜線)。這就是爲什麼你得到404錯誤 - 它匹配不同的location塊,並可能由Django處理。

  3. 您不能列出目錄,因此您會收到Forbidden錯誤。

我認爲這是由您來決定如何處理這些案件,只是讓他們一致。確保您瞭解nginx配置和不同請求所採用的路徑。爲了避免403錯誤,您可以將空的index.html文件放在該目錄中。

相關問題