- 浏览: 570019 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yeruby:
请教下,这个命令会将kube-scheduler的所有日志输出 ...
二、master的安装 -
107x:
不错,谢谢!
kerberos安装配置 -
yhq1212:
如何禁止NGINX先本地缓存呢
nginx upload在java中的应用 -
lcy651:
写的很好、学习了
Nginx的安装 -
huangyunbin:
楼主现在是做运维了吗
mysql的安装,CXXFLAGS
1.首先按照nginx
参考http://running.iteye.com/blog/326873
2.创建新模块目录
3.创建编译相关文件(config)
其内容为:
ngx_addon_name一般设置为模块名称
HTTP_MODULES保持所有的HTTP模块名称,以空格符相连。用法有点类似于linux中得path,先给出之前的$HTTP_MODULES,然后在加上新增的MODULES
NGX_ADDON_SRCS指定新增模块的源代码,注意:如果使用了$ngx_addon_dir,它等价于在configure执行时--add-module=PATH中的PATH参数
4.创建源文件ngx_module_echo.c
5.编译nginx
6.修改nginx.conf
7.测试
8.运行
测试没有问题以后,我们就可以开始运行了
然后通过浏览器进行访问
http://localhost:8100/hello
显示
Hi,this is a demo module
好了,大功告成,nginx模块版的hello world就到这里了;
参考http://running.iteye.com/blog/326873
2.创建新模块目录
#mkdir ngx_module_echo
3.创建编译相关文件(config)
#vim ngx_module_echo/config
其内容为:
ngx_addon_name=ngx_module_echo HTTP_MODULES="$HTTP_MODULES ngx_module_echo" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_module_echo.c" CORE_LIBS="$CORE_LIBS " #CORE_LIBS="$CORE_LIBS -lm"
ngx_addon_name一般设置为模块名称
HTTP_MODULES保持所有的HTTP模块名称,以空格符相连。用法有点类似于linux中得path,先给出之前的$HTTP_MODULES,然后在加上新增的MODULES
NGX_ADDON_SRCS指定新增模块的源代码,注意:如果使用了$ngx_addon_dir,它等价于在configure执行时--add-module=PATH中的PATH参数
4.创建源文件ngx_module_echo.c
#include <ngx_config.h> #include <ngx_core.h> #include <ngx_http.h> static char* ngx_echo_readconf(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); static void* ngx_echo_create_loc_conf(ngx_conf_t *cf); static char* ngx_echo_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child); typedef struct { ngx_str_t ecdata; ngx_flag_t enable; } ngx_echo_loc_conf_t; static ngx_command_t ngx_echo_commands[] = { { ngx_string("echo"), NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, ngx_echo_readconf, NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_echo_loc_conf_t, ecdata), NULL }, ngx_null_command }; static ngx_http_module_t ngx_echo_module_ctx = { NULL, /* preconfiguration */ NULL, /* postconfiguration */ NULL, /* create main configuration */ NULL, /* init main configuration */ NULL, /* create server configuration */ NULL, /* merge server configuration */ ngx_echo_create_loc_conf, /* create location configuration */ ngx_echo_merge_loc_conf /* merge location configuration */ }; ngx_module_t ngx_module_echo = { NGX_MODULE_V1, &ngx_echo_module_ctx, /* module context */ ngx_echo_commands, /* module directives */ NGX_HTTP_MODULE, /* module type */ NULL, /* init master */ NULL, /* init module */ NULL, /* init process */ NULL, /* init thread */ NULL, /* exit thread */ NULL, /* exit process */ NULL, /* exit master */ NGX_MODULE_V1_PADDING }; static ngx_int_t ngx_echo_handler(ngx_http_request_t *r) { printf("called:ngx_echo_handler\n"); ngx_int_t rc; ngx_buf_t *b; ngx_chain_t out; ngx_echo_loc_conf_t *cglcf; cglcf = ngx_http_get_module_loc_conf(r, ngx_module_echo); if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) { return NGX_HTTP_NOT_ALLOWED; } if (r->headers_in.if_modified_since) { return NGX_HTTP_NOT_MODIFIED; } r->headers_out.content_type.len = sizeof("text/html") - 1; r->headers_out.content_type.data = (u_char *) "text/html"; r->headers_out.status = NGX_HTTP_OK; r->headers_out.content_length_n = cglcf->ecdata.len; if (r->method == NGX_HTTP_HEAD) { rc = ngx_http_send_header(r); if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) { return rc; } } b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t)); if (b == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "Failed to allocate response buffer."); return NGX_HTTP_INTERNAL_SERVER_ERROR; } out.buf = b; out.next = NULL; b->pos = cglcf->ecdata.data; b->last = cglcf->ecdata.data+(cglcf->ecdata.len); b->memory = 1; b->last_buf = 1; rc = ngx_http_send_header(r); if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) { return rc; } return ngx_http_output_filter(r, &out); } static char * ngx_echo_readconf(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { printf("called:ngx_echo_readconf\n"); ngx_http_core_loc_conf_t *clcf; clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); clcf->handler = ngx_echo_handler; ngx_conf_set_str_slot(cf,cmd,conf); return NGX_CONF_OK; } static void * ngx_echo_create_loc_conf(ngx_conf_t *cf) { printf("called:ngx_echo_create_loc_conf\n"); ngx_echo_loc_conf_t *conf; conf = ngx_pcalloc(cf->pool, sizeof(ngx_echo_loc_conf_t)); if (conf == NULL) { return NGX_CONF_ERROR; } conf->ecdata.len=0; conf->ecdata.data=NULL; conf->enable = NGX_CONF_UNSET; return conf; } static char * ngx_echo_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) { printf("called:ngx_echo_merge_loc_conf\n"); ngx_echo_loc_conf_t *prev = parent; ngx_echo_loc_conf_t *conf = child; ngx_conf_merge_str_value(conf->ecdata, prev->ecdata, 10); ngx_conf_merge_value(conf->enable, prev->enable, 0); /** if(conf->enable) ngx_echo_init(conf); */ return NGX_CONF_OK; return NGX_CONF_OK; }
5.编译nginx
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.33/ --with-http_stub_status_module --with-http_realip_module --add-module=/root/ngx_module_echo/ --with-debug make make install
6.修改nginx.conf
worker_processes 1; daemon off; master_process off; error_log /tmp/error.log debug; pid /tmp/nginx_demo.pid; events { worker_connections 1024; } http { include mime.types; sendfile on; keepalive_timeout 65; tcp_nodelay on; server { listen 8100; server_name localhost; access_log /tmp/access.log; error_log /tmp/error.log debug; location /hello { echo "Hi,this is a demo module"; } } }
7.测试
#/usr/local/nginx/sbin/nginx -t called:ngx_echo_create_loc_conf called:ngx_echo_create_loc_conf called:ngx_echo_create_loc_conf called:ngx_echo_readconf called:ngx_echo_merge_loc_conf called:ngx_echo_merge_loc_conf nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
8.运行
测试没有问题以后,我们就可以开始运行了
#/usr/local/nginx/sbin/nginx
然后通过浏览器进行访问
http://localhost:8100/hello
显示
Hi,this is a demo module
好了,大功告成,nginx模块版的hello world就到这里了;
发表评论
-
nginx+php5.5环境安装
2015-03-20 12:00 16351.安装依赖包 yum install -y gcc gc ... -
nginx模块开发入门(十) -5 Load-balancers
2013-09-05 22:18 30115. Load-Balancers Load-bal ... -
nginx模块开发入门(九) -4 Filters
2013-09-05 11:35 14744. Filters 注:本节事例http/m ... -
nginx模块开发入门(八)-3.3 Handler Installation
2013-09-05 11:11 11213.3. Handler Installation 3.3. ... -
nginx模块开发入门(七)-3.2 Anatomy of an Upstream (a.k.a Proxy) Handler
2013-09-05 11:00 17463.2. 剖析Upstream(又称 Proxy) Handl ... -
nginx模块开发入门(六)-3.1 Anatomy of a Handler (Non-proxying)
2013-09-05 09:51 19863. Handlers 接下来我们把模块的细节放到显 ... -
nginx模块开发入门(五)-2.4 The Module Definition
2013-09-04 18:26 8392.4. 模块定义(The Module Definition ... -
nginx模块开发入门(四)-2.3 The Module Context
2013-09-04 18:15 33682.3. 模块上下文(The Modu ... -
nginx模块开发入门(三)-2 Components of an Nginx Module
2013-09-04 17:47 17412. Components of an Nginx Modul ... -
nginx模块开发入门(二) -1 Overview
2013-09-04 16:45 13281.High-Level Overview of Nginx' ... -
答复: [译]Nginx & Comet:低延迟信息推送
2010-01-07 17:04 1765使用curl快速测试 新建一个订阅者 打开 ... -
答复: [译]Nginx & Comet:低延迟信息推送
2010-01-07 16:44 1228push_authorized_channels_only [ ... -
[译]Nginx & Comet:低延迟信息推送
2010-01-07 14:45 3303原文链接:Nginx & Com ... -
nginx强行屏蔽——微软(BING),无语。。。
2009-08-26 15:29 1612微软(BING)完全不遵守 ... -
Nginx的安装
2009-02-11 16:05 99391.下载pcre #wget http://jaist.dl. ...
相关推荐
Nginx模块开发入门
Nginx模块开发入门.Nginx模块开发入门.Nginx模块开发入门.Nginx模块开发入门.
nginx模块开发指南,nginx开发,入门,http模块等通讯协议。
nginx模块开发基础入门,含有代码,亲测可行
nginx模块开发教程,简述模块开发的方法
深入理解Nginx模块开发及架构解析,深入理解Nginx模块开发及架构解析
这一部分介绍配置项的方式,更偏重于带领对Nginx还比较陌生的读者熟悉它,通过了解几个基本Nginx模块的配置修改方式,进而使读者可以通过查询官网、第三方网站来了解如何使用所有Nginx模块的用法。? 在第二部分的...
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是...
Nginx模块开发指南 C++11 Boost开发指导,PDF有书签。
Nginx模块开发与架构详解
书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...
Nginx模块开发OpenResty简单使用笔记整理 ### Nginx简介 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中。与Apache相比。 同时,大量的第三方扩展模块也令...
深入理解Nginx模块开发与架构解析.深入理解Nginx模块开发与架构解析.
深入理解Nginx模块开发与架构解析(完整版) pdf,nginx必备知识
·对Nginx及如何将它搭建成一个高性能的Web服务器感兴趣的读者。 ·希望通过开发特定的HTTP模块实现高性能Web服务器的读者。 ·希望了解Nginx的架构设计,学习其怎样充分使用服务器上的硬件资源的读者。 ·了解如何...
深入理解Nginx模块开发与架构解析第2版LinuxUnix技术丛书
深入理解Nginx模块开发与架构解析 深入理解Nginx模块开发与架构解析
深入理解Nginx模块开发与架构解析(第2版),nginx模块开发,绝对高清。。。。。。。
NULL 博文链接:https://openplatform-sohu-com.iteye.com/blog/628375
深入理解Nginx模块开发与架构解析第2版LinuxUnix技术丛书 mobi格式,可以下载mobi阅读器打开