關於Nginx支援 htaccess的分析

2021-06-21 10:42:13 字數 1242 閱讀 9739

之前曾在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檔案,你甚至可以使用.***來放偽靜態規則。但是,為了安全起見,我建議你使用預設的conf檔案來儲存rewrite規則。畢竟,說不定那天手賤就把目錄清空了,規則就沒了。nginx也因此崩潰

nginx支援動態模組

之前一直以為nginx只支援靜態模組,每次新增新模組的時候只能重新編譯,最近在看nginx的原始碼,發現新版nginx已經支援進行動態載入模組。通過模組動態載入指令load module,我們可以在執行中修改nginx的配置,指定要載入的第三方模組,然後reload,是不是方便了很多。core模組已...

Nginx安裝lua支援

需要luajit 2.0.4.tar.gz,ngx devel kit,lua nginx module wget c 4.tar gztar xzvf luajit 2.0 4.tar gzcd luajit 2.0 4make install prefix usr local luajit注意環...

配置Nginx支援php

nginx.conf中配置 server error page 404 404.html redirect server error pages to the static page 50x.html error page 500 502 503 504 50x.html location 50x....