2016-08-18 45 views
1

我有一個在Ubuntu服務器上運行在Apache上的Symfony 2.8內置的網站。我在網站上發現了一些破碎的圖像鏈接,每當有人進入違規頁面時,它都會將處理器和內存掛起,瀏覽器會繼續嘗試提取丟失的資產60秒。中斷的圖像鏈接導致服務器負載過重。 Symfony2/Apache

我修復了丟失的圖像,但是在服務器端可以做些什麼來停止搜索丟失的資產嗎?

現在,攻擊者只需簡單地從我的網站上下載不在那裏的內容,並將我的服務器交給它的膝蓋就很容易。

- 編輯 -

我想知道是否有一種方法可以採取資源停止我的服務器創下如果有人試圖訪問一個路徑/文件直接是不存在的。即如果他們直接訪問example.com/images/non-existent.jpg。目前在我的服務器上,我的CPU將在一個核心上達到100%,RAM使用率將緩慢攀升,直到請求超時1分鐘左右。只有幾個這樣的請求會使用我所有的資源。

- 編輯2--

,因爲我貼這個,我已經發現,這並非僅僅侷限於圖像。任何應該返回404錯誤的路徑行爲都是相同的。即example.com/this/is/not/a/real/path只會掛起,最後超時。

回答

-1

檢查文件exsists包括它在你的HTML之前

if(file_exists('img.jpg')){ 
    // your code for inserting the image into the HTML 
} 

http://php.net/manual/en/function.file-exists.php

+0

也許我不會在我的問題很清楚,但是我知道如何檢查文件是否存在在PHP 。我在想,如果有人試圖訪問直接不存在的路徑/文件,是否有辦法阻止我的服務器獲取資源。 即,如果他們直接進入example.com/images/non-existent.jpg。目前在我的服務器上,我的CPU將在一個核心上達到100%,RAM使用率將緩慢攀升,直到請求超時1分鐘左右。 – chrislebaron

+0

@chrislebaron在閱讀你的更新後,如果有人訪問一個不存在的文件,服務器應該簡單地拋出一個404錯誤 –

+0

我不得不同意這是我想要發生的行爲,但由於某種原因,它不是。也許我有Symfony配置錯誤。我嘗試去幾個瀏覽器上不存在的資源,它只是掛了大約一分鐘,然後給出和空的響應錯誤。 – chrislebaron