月光博客 » 編程開發 » 關于Nginx支持.htaccess的分析

關于Nginx支持.htaccess的分析

  之前曾在Typecho開發群中與王軼討論了關于Nginx支持.htaccess文件的問題。王軼認為,Nginx能夠支持.htaccess規則,且兼容Apache規則。我認為,Nginx支持使用.htaccess文件來存儲Nginx的偽靜態規則,不兼容.htaccess規則。

  我之所以這么說,是有原因的,我查閱了Nginx的官方文檔文檔1/文檔2,文檔1是Nginx的Rewrite模塊的doc,詳細的解釋了nginx的rewrite規則組成,在其中,我沒有找到關于Apache的規則,在文檔2中,文檔說明了為什么不使用.htaccess文件 并將Nginx和Apache進行比較。眾所周知,Nginx不支持.htaccess規則,開源中國的站長紅薯曾發過一篇文章:誰說nginx不支持.htaccess,在我看來,紅薯是在混淆視聽,偷換了概念,我們說的是.htaccess規則,而紅薯說的是.htaccess文件。

  說了那么多廢話。接下來我分析一下nginx為什么不支持.htaccess,主要有以下幾個方面。

  1. 性能需要:在文檔2中我們可以知道,Apache處理偽靜態規則時會依次搜索各個目錄下的.htaccess文件,這樣就會造成大量的查詢,影響性能,與Nginx的設計理念不符。

  2. 軟件模式決定:Apache設計時便是動態加載這一點,可以從Apache處理.htaccess文件看出來。你修改了.htaccess后,就可以馬上生效,包括Apache加載模塊也是動態加載,而Nginx則是寫死的規則,修改后需要重載nginx才可以.Tengine雖然提供了動態加載模塊,但仍需要重載設置才能生效,可以說是在”偽動態”。

  3. 北方毛熊的自尊心作祟:Apache后面有美帝的身影,毛熊們覺得要是兼容了就有點低聲下氣。所以搞出自己的版本。

  關于.htaccess應用于Nginx的可行性分析。在我看來,.htaccess不可能應用于LNMP平臺的商業化。主要有以下幾個原因:

  1. 安全性較低。

  由于Nginx是先加載配置文件,然后才運 行,所以,如果你用的虛擬主機有一個愛折騰的鄰居,萬一那個家伙手殘了,改錯了,你也會無法訪問,隨之遭殃。

  2. 操作不便。

  Nginx因為是先載入配置文件,所以,在每次修改完需要重啟Nginx,你是否給用戶ssh密碼以方便其重啟?如果不給密碼使用php中的exec,又會有跨站的危險。如果開啟了Chroot,exec就沒有效果了。

  總結:實際上nginx不僅僅支持.htaccess文件,你甚至可以使用.mp3來放偽靜態規則。但是,為了安全起見,我建議你使用默認的conf文件來保存rewrite規則。畢竟,說不定那天手賤就把目錄清空了,規則就沒了。Nginx也因此崩潰

  來源:投稿,作者:西秦公子,原文鏈接

關于Nginx支持.htaccess的分析

頂一下 ▲()   踩一下 ▼()

相關文章

  1. 1
    獨行貓兒   說道:
    干貨,不錯!
    支持(16反對(10回復
  1. 2
    知而不乎   說道:
    西秦公子說的對,確實有一些不太兼容
    支持(10反對(6回復
  1. 3
    狂放   說道:
    戰斗民族沒考慮這一點才使得根本沒有Nginx虛機啊
    支持(0反對(0回復
  1. 4
    vic   說道:
    好東西,主人辛苦了
    支持(11反對(12回復
  1. 5
    西秦公子   說道:
    哈哈哈~我的投稿第一次發表,以后要多多投稿啊。
    浩子 于 2014-3-31 11:15:28 回復
    Typecho云肥皂基金發來賀電;)
    支持(9反對(13回復
  1. 6
    ShunYea   說道:
    這個東西不錯,推薦。
    支持(8反對(13回復

發表留言


排列三和值南方双彩网