nginx學習整理 nginx apache nginx php nginx rewrite

來源:互聯網
上載者:User
nginx
nginx是一個高效能HTTP和反向 Proxy伺服器,也是一個IMAP/POP3/SMTP伺服器。
能夠支援高達5w以上並發串連數的響應,nginx選擇了epoll/kqueue作為網路IO模型。
nginx也可以作為負載平衡伺服器,nginx使用c語言編寫。
nginx是一個主進程和多個背景工作處理序,背景工作處理序是單線程的。每個背景工作處理序可以採用非同步非阻塞的方式處理用戶端請求。
【擴充學習 非同步非阻塞 以及epoll select poll kqueue】
nginx中php是以fastcgi的方法結合nginx。
用戶端發送請求給nginx伺服器,nginx伺服器通過fastcgi將這個請求交給php進行處理,php處理的結果通過fastcgi返回給nginx伺服器

之後nginx伺服器再將結果返回給用戶端。

fastcgi的知識
cgi是一種通用閘道介面 是外部應用程式和web伺服器之間的介面標準,在外部應用程式和web伺服器之間傳遞資訊的規程。
cgi規範允許web伺服器執行外部程式,並將它們輸出發送給web瀏覽器。
fastcgi是對cgi的一種改進。
fastcgi像是一個常駐記憶體型的cgi,當請求到達時cgi會先fork出一個進程來進行處理這個請求
但是fastcgi在啟動載入時,就啟動多個cgi解譯器,並等待web伺服器的串連。
當用戶端請求到達webserver的時候,fastcgi進程管理器會選擇一個cgi解譯器來處理這個請求。
好處是cgi解譯器被載入記憶體不需要每次需要的時候從儲存空間中讀取,極大提高了網站的效能
fastcgi的問題是修改php配置的時候不能立刻生效。需要reload一下。
阻塞
用戶端的一個請求過來,web伺服器接收這個請求,這個請求需要進行io操作,
io操作需要耗費10秒,那麼web伺服器就等待10秒,在這10秒的時間裡,web伺服器拒絕其他的用戶端請求。
非阻塞
一個用戶端的請求過來,web伺服器接收這個請求,這個請求需要進行io操作,並且io需要耗時10秒
web伺服器在io操作的這10秒裡,還是可以接收其他用戶端請求,web伺服器將這些請求的檔案描述符放到一個隊列裡,當io操作準備好
就將資料發送給這個用戶端。
非同步非阻塞io模型
一個master線程 和多個worker線程 ,一個worker線程可以處理多個請求,如果請求的事件沒有處理好,那麼就將這個事件檔案描述符放到一個隊列中
當事件處理好之後,再去讀請求返回的結果,所以可以處理大量的並發請求,當然這裡的並發只是沒有處理完的請求,由於worker是一個線程
所以,能同時處理的請求只要一個。
只是在請求間進行不斷地切換而已,切換也是因為非同步事件未準備好,而主動讓出的。
這裡的切換是沒有任何代價,你可以理解為迴圈處理多個準備好的事件,事實上就是這樣的。
與多線程相比,這種事件處理方式是有很大的優勢的,不需要建立線程,每個請求佔用的記憶體也很少,沒有環境切換,
事件處理非常的輕量級。並發數再多也不會導致無謂的資源浪費(環境切換)

以上就介紹了nginx學習整理,包括了nginx方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.