nginx安裝后怎么開發(fā)

nginx安裝后怎么開發(fā)

得益于nginx的模塊化設計,用nginx做模塊化開發(fā)很方便,但是也帶來了代碼復雜,難以讀懂的問題,首先看一下http模塊是怎么準備的,真正處理http請求的函數(shù)(或者說是handler,句柄)是ngx_http_wait_request_handler。

rev->handler?=?ngx_http_wait_request_handler;

以這個函數(shù)為例,我們來看看http模塊是怎么將這個handler掛載好的,如下圖

nginx安裝后怎么開發(fā)

ngx_http_block()則就是一個典型的nginx中的module函數(shù)了,當整個模塊加載的時候就會調(diào)用這個函數(shù)

掛好了handler,什么時候去調(diào)用這個handler呢?

這就要靠nginx的Event模塊了,event模塊實現(xiàn)的功能就是將用來accept的fd注冊到epoll中,等有client的請求到來,生成一個新的connfd,然后從連接池里拿出一個連接,將這個連接初始化(也就是把剛剛我們的讀寫事件的回調(diào)等東西寫進連接中),然后一并注冊到epoll中去,這樣,只要這個connfd就緒,就可以根據(jù)fd的讀寫狀態(tài)調(diào)用其相應讀寫事件的handler了。

來看下event模塊是怎么初始化然后監(jiān)聽用來accept_fd的:

nginx安裝后怎么開發(fā)

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊7 分享