摘要:運(yùn)營(yíng)研發(fā)團(tuán)隊(duì)季偉濱模塊名建立模塊源碼目錄新建文件,寫(xiě)入如下配置新建配置殺死舊的進(jìn)程啟動(dòng)新編譯的帶有插件的驗(yàn)證自己寫(xiě)的插件
運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 季偉濱
模塊名:ngx_http_jiweibin_module 1、建立模塊源碼目錄mkdir /data/code/c/nginx-1.6.2/src/plugin
2、新建config文件vim /data/code/c/nginx-1.6.2/src/plugin/config,寫(xiě)入如下配置:
ngx_addon_name=ngx_http_jiweibin_module HTTP_MODULES="$HTTP_MODULES ngx_http_jiweibin_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_jiweibin_module.c"3、新建ngx_http_jiweibin_module.c
#include4、configure#include #include static char *ngx_http_jiweibin_cmd_set(ngx_conf_t *cf,ngx_command_t *cmd,void *conf); static ngx_int_t ngx_http_jiweibin_handler(ngx_http_request_t *r); static ngx_command_t ngx_http_jiweibin_commands[] = { { ngx_string("jiweibin"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LMT_CONF|NGX_CONF_NOARGS, ngx_http_jiweibin_cmd_set, NGX_HTTP_LOC_CONF_OFFSET, 0, NULL }, ngx_null_command }; static char * ngx_http_jiweibin_cmd_set(ngx_conf_t *cf,ngx_command_t *cmd,void *conf){ ngx_http_core_loc_conf_t *clcf; clcf = ngx_http_conf_get_module_loc_conf(cf,ngx_http_core_module); clcf->handler = ngx_http_jiweibin_handler; return NGX_CONF_OK; } static ngx_http_module_t ngx_http_jiweibin_module_ctx = { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL }; ngx_module_t ngx_http_jiweibin_module = { NGX_MODULE_V1, &ngx_http_jiweibin_module_ctx, ngx_http_jiweibin_commands, NGX_HTTP_MODULE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NGX_MODULE_V1_PADDING }; static ngx_int_t ngx_http_jiweibin_handler(ngx_http_request_t *r){ if(!(r->method & (NGX_HTTP_GET|NGX_HTTP_POST))){ return NGX_HTTP_NOT_ALLOWED; } ngx_int_t rc = ngx_http_discard_request_body(r); if(rc != NGX_OK){ return rc; } ngx_str_t content_type = ngx_string("text/plain"); ngx_str_t response = ngx_string("hello world"); r->headers_out.status = NGX_HTTP_OK; r->headers_out.content_length_n = response.len; r->headers_out.content_type = content_type; rc = ngx_http_send_header(r); if(rc == NGX_ERROR || rc > NGX_OK){ return rc; } ngx_buf_t *b; b = ngx_create_temp_buf(r->pool,response.len); if(b == NULL){ return NGX_HTTP_INTERNAL_SERVER_ERROR; } ngx_memcpy(b->pos,response.data,response.len); b->last = b->pos + response.len; b->last_buf = 1; ngx_chain_t out; out.buf = b; out.next = NULL; return ngx_http_output_filter(r,&out); }
cd /data/code/c/nginx-1.6.2 ./configure --prefix=/home/xiaoju/nginx-jiweibin --add-module=/data/code/c/nginx-1.6.2/src/plugin/5、make & make install 6、配置nginx 7、殺死舊的nginx進(jìn)程 8、啟動(dòng)新編譯的帶有插件的nginx
/home/xiaoju/nginx-jiweibin/sbin/nginx -c /home/xiaoju/nginx-jiweibin/conf/nginx.conf
9、驗(yàn)證自己寫(xiě)的插件http://10.179.195.72:8080/hello
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/40151.html
摘要:找到這個(gè)模塊的指令后,則會(huì)調(diào)用這個(gè)指令的解析回調(diào)函數(shù)即結(jié)構(gòu)體的第三個(gè)參數(shù)來(lái)進(jìn)行處理。調(diào)用他們上面提到的中的回調(diào)函數(shù)來(lái)申請(qǐng)和初始化對(duì)應(yīng)模塊的配置結(jié)構(gòu)體。需要注意的是,即時(shí)當(dāng)前是直接在塊級(jí)別,這三個(gè)回調(diào)函數(shù)都會(huì)被調(diào)用。拒絕暴力枚舉式編寫(xiě)配置文件 原博:https://blog.coordinate35.cn/... 熱身 首先來(lái)看下這幾個(gè)小例子: 第一個(gè)例子: server { l...
摘要:入門(mén)是為和編寫(xiě)的框架。使用來(lái)安裝創(chuàng)建一個(gè)應(yīng)用命令行工具附帶了一個(gè)命令行工具,可幫助您創(chuàng)建新項(xiàng)目和啟動(dòng)服務(wù)器。在生產(chǎn)環(huán)境中,應(yīng)當(dāng)啟用緩存以獲得最佳性能。指令指定一個(gè)代碼塊,它將處理與其他不匹配的任何請(qǐng)求。將忽略常規(guī)的二進(jìn)制文件。 lapis入門(mén) Lapis 是為 Lua 和 MoonScript 編寫(xiě)的 Web 框架。 Lapis 很有趣,因?yàn)樗⒃贜ginx 發(fā)行的 OpenRest...
摘要:實(shí)戰(zhàn)開(kāi)發(fā)一個(gè)擴(kuò)展地址使用指令輸出一個(gè)字符串版本開(kāi)發(fā)環(huán)境安裝一個(gè)干凈的下載并且解壓它安裝和需要的運(yùn)行定義模塊配置結(jié)構(gòu)該結(jié)構(gòu)體定義在這里定義模塊的指令和參數(shù)轉(zhuǎn)化函數(shù)定義模塊定義類(lèi)型的結(jié)構(gòu)體變量初始化一個(gè)配置結(jié)構(gòu)體將其父的配置信息合并到此結(jié)構(gòu) 實(shí)戰(zhàn)開(kāi)發(fā)一個(gè)Nginx擴(kuò)展 (Nginx Module) repo地址 https://github.com/wujunze/ng... nginx...
摘要:大型網(wǎng)站建議用自代的集群功能從個(gè)人過(guò)往的使用情況來(lái)看,的負(fù)載能力比高很多。最新的服務(wù)器也改用了。你對(duì)的需求決定你的選擇。在模式下,如果處理慢或者前端壓力很大的情況下,很容易出現(xiàn)進(jìn)程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象。 1、nginx相對(duì)于apache的優(yōu)點(diǎn): 輕量級(jí),同樣起web 服務(wù),比apache占用更少的內(nèi)存及資源 抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,而apache 則是阻塞型的...
摘要:大型網(wǎng)站建議用自代的集群功能從個(gè)人過(guò)往的使用情況來(lái)看,的負(fù)載能力比高很多。最新的服務(wù)器也改用了。你對(duì)的需求決定你的選擇。在模式下,如果處理慢或者前端壓力很大的情況下,很容易出現(xiàn)進(jìn)程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象。 1、nginx相對(duì)于apache的優(yōu)點(diǎn): 輕量級(jí),同樣起web 服務(wù),比apache占用更少的內(nèi)存及資源 抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,而apache 則是阻塞型的...
閱讀 1933·2021-09-22 15:23
閱讀 3415·2021-09-04 16:45
閱讀 2200·2021-07-29 14:49
閱讀 2832·2019-08-30 15:44
閱讀 1622·2019-08-29 16:36
閱讀 1152·2019-08-29 11:03
閱讀 1597·2019-08-26 13:53
閱讀 571·2019-08-26 11:57