除了上一節(jié)介紹的模塊的基本結(jié)構(gòu)以外,handler 模塊必須提供一個(gè)真正的處理函數(shù),這個(gè)函數(shù)負(fù)責(zé)對(duì)來(lái)自客戶(hù)端請(qǐng)求的真正處理。這個(gè)函數(shù)的處理,既可以選擇自己直接生成內(nèi)容,也可以選擇拒絕處理,由后續(xù)的 handler 去進(jìn)行處理,或者是選擇丟給后續(xù)的 filter 進(jìn)行處理。來(lái)看一下這個(gè)函數(shù)的原型申明。
typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);
r 是 http 請(qǐng)求。里面包含請(qǐng)求所有的信息,這里不詳細(xì)說(shuō)明了,可以參考別的章節(jié)的介紹。 該函數(shù)處理成功返回 NGX_OK,處理發(fā)生錯(cuò)誤返回 NGX_ERROR,拒絕處理(留給后續(xù)的 handler 進(jìn)行處理)返回 NGX_DECLINE。 返回 NGX_OK 也就代表給客戶(hù)端的響應(yīng)已經(jīng)生成好了,否則返回 NGX_ERROR 就發(fā)生錯(cuò)誤了。
更多建議: