Hello World HTTP模

1.构造config

ngx_addon_name=ngx_http_mytest_module

HTTP_MODULES="$HTTP_MODULESngx_http_mytest_module"

NGX_ADDON_SRCS="$NGX_ADDON_SRCS$ngx_addon_dir/ngx_http_mytest_module.c"

2.在ngx_http_mytest_module.c中定义mytest模块

  1. #include<ngx_config.h>
  2.  
  3. #include<ngx_core.h>
  4.  
  5. #include<ngx_http.h>
  6.  
  7. static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t* r);
  8.  
  9. static char* ngx_http_mytest(ngx_conf_t* cf, ngx_command_t* cmd, void* conf);
  10.  
  11. //用于定义模块的配置文件參数
  12.  
  13. static ngx_command_t ngx_http_mytest_commonds[] = {
  14.  
  15. {
  16.  
  17. ngx_string("mytest"),
  18.  
  19. NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LMT_CONF | NGX_CONF_NOARGS,
  20.  
  21. ngx_http_mytest,
  22.  
  23. NGX_HTTP_LOC_CONF_OFFSET,
  24.  
  25. 0,
  26.  
  27. NULL
  28.  
  29. }
  30.  
  31. ngx_null_command
  32.  
  33. };
  34.  
  35. //指向ngx_http_module接口(HTTP框架要求)
  36. static ngx_http_module ngx_http_mytest_module_ctx = {
  37.  
  38. NULL,
  39.  
  40. NULL,
  41.  
  42. NULL,
  43.  
  44. NULL,
  45.  
  46. NULL,
  47.  
  48. NULL,
  49.  
  50. NULL,
  51.  
  52. NULL
  53.  
  54. };
  55.  
  56. //定义mytest模块
  57. ngx_module_t ngx_http_mytest_module = {
  58.  
  59. ngx_MODULE_v1,
  60.  
  61. &ngx_http_mytest_module_ctx,
  62.  
  63. ngx_http_mytest_commands,
  64.  
  65. NGX_HTTP_MODULE,
  66.  
  67. NULL,
  68.  
  69. NULL,
  70.  
  71. NULL,
  72.  
  73. NULL,
  74.  
  75. NULL,
  76.  
  77. NULL,
  78.  
  79. NULL,
  80.  
  81. NGX_MODULE_V1_PADDING
  82.  
  83. };
  84.  
  85. <span style="font-family:Calibri;">//当在某个配置块中出现mytest配置项时。nginx会调用ngx_http_mytest方法
  86. static char* ngx_http_mytest(ngx_conf_t* cf, ngx_command_t* cmd, void* conf)
  87.  
  88. {
  89.  
  90. ngx_http_core_loc_conf_t* clcf;
  91.  
  92. clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
  93.  
  94. clcf->handler = ngx_http_mytest_handler;
  95.  
  96. return NGX_CONF_OK;
  97.  
  98. }
  99. </span>
  100. //在这里处理用户请求,并发送响应
  101. static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t* r)
  102.  
  103. {
  104.  
  105. if(!(r->method & (NGX_HTTP_GET | NGX_HTTP_HEAD))){
  106.  
  107. return NGX_HTTP_NOT_ALLOWED;
  108.  
  109. }
  110.  
  111. ngx_int_t rc = ngx_http_discard_request_body(r);
  112.  
  113. if(rc != NGX_OK){
  114.  
  115. return rc;
  116.  
  117. }
  118.  
  119. ngx_str_t type = ngx_string("text/plain");
  120.  
  121. ngx_str+t response = ngx_string("Hello World!");
  122.  
  123. r->headers_out.status= NGX_HTTP_OK;
  124.  
  125. r->headers_out.content_length_n = response.len;
  126.  
  127. r->headerS_out.content_type = type;
  128.  
  129. rc = ngx_http_send_header(r);
  130.  
  131. if(rc == NGX_ERROR || rc->NGX_OK || r->header_only){
  132.  
  133. return rc;
  134.  
  135. }
  136.  
  137. ngx_buf_t* b;
  138.  
  139. b = ngx_create_temp_buf(r->pool, response.len);
  140.  
  141. if(b == NULL){
  142.  
  143. return NGX_HTTP_INTERNAL_SERVER_ERROR;
  144.  
  145. }
  146.  
  147. ngx_memcpy(b->pos, response.data, response.len);
  148.  
  149. b->last = b->pos + response.len;
  150.  
  151. b->last_buf = 1;
  152.  
  153. ngx_chain_t out;
  154.  
  155. out.buf = b;
  156.  
  157. out.next = NULL;
  158.  
  159. return ngx_http_output_filter(r, &out);
  160.  
  161. }

3.在ngx.conf中http里面默认的server中增加例如以下配置

location /test{

mytest;

}

4.编译安装nginx

./configure --add-module=/home/chen123/nginx/exp2 黄色区域为config和ngx_http_mytest_module.c的安装文件夹)

make

sudo make install

5.启动nginx

sudo /usr/local/nginx/sbin/nginx

6.显示结果例如以下:

版权声明:本文博主原创文章,博客,未经同意不得转载。

Nginx得知——Hello World模的更多相关文章

  1. Nginx得知——流程模型(worker流程)

    流程模型 worker流程 master进程模型核心函数ngx_master_process_cycle()中调用了创建子进程函数ngx_start_worker_processes(),该函数源代码 ...

  2. Apache与Nginx的优缺点比较

    1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下ngin ...

  3. web服务器之nginx与apache

    最近准备架设php的web服务器,以下内容可供参考. 1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞 ...

  4. nginx&apache比较

    1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx ...

  5. 转:Apache与Nginx的优缺点比较

    Apache与Nginx的优缺点比较 http://weilei0528.blog.163.com/blog/static/206807046201321810834431/ 1.nginx相对于ap ...

  6. nginx和apache的优缺点比较

    简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高并发时性能较弱,耗费资源多 ...

  7. Apache与Nginx优缺点比较

    本文来源:收集.整理自互联网 1.nginx相对于apache的优点:  轻量级,同样起web 服务,比apache 占用更少的内存及资源  抗并发,nginx 处理请求是异步非阻塞的,而apache ...

  8. nginx+tomcat负载均衡策略

    測试环境均为本地,測试软件为: nginx-1.6.0,apache-tomcat-7.0.42-1.apache-tomcat-7.0.42-2.apache-tomcat-7.0.42-3 利用n ...

  9. Apache和Nginx的对比

    Apache与Nginx的优缺点比较 1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apac ...

随机推荐

  1. OpenRisc-32-ORPSoC烧写外部spi flash

    引言 经过前面的分析和介绍,我们对ORPSoC的启动过程(http://blog.csdn.net/rill_zhen/article/details/8855743)和 ORpSoC的debug子系 ...

  2. Linux ssh密钥自动登录(转)

    在开发中,经常需要从一台主机ssh登陆到另一台主机去,每次都需要输一次login/Password,很繁琐.使用密钥登陆就可以不用输入用户名和密码了 实现从主机A免密码登陆到主机B,需要以下几个步骤: ...

  3. 下载jdk文件后缀是.gz而不是.tar.gz怎么办

    用chrom浏览器下载了linux版的jdk,发现文件后缀是.gz,没看过这玩意,一打开,还是一个.gz文件,原本以为是新文件后缀呢.那个百度google啊. . ..最后都没发现有这方面的资料啊.. ...

  4. 鸟哥Linux私房菜知识点总结6到7章

    近期翻看了一本<鸟哥的Linux私房菜>.这是一本基础的书,万丈高楼平地起.会的不多但能够学.这是我整理的一些知识点.尽管非常基础.希望和大家共同交流. 第6章主机规划与磁盘分区 1.在进 ...

  5. 文件操作ofstream,open,close,ifstream,fin,依照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件

     1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; ...

  6. Python使用时间戳

    1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" 将其转换为时间数组 importtime timeArray = time.strpti ...

  7. 服务器编程入门(3)TCP协议详解

    问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一 ...

  8. 项目中那些事|ListView中嵌套ListView问题

    要在一个ListView中放入另一个ListView,也即在一个ListView的每个 item 中放入另外一个ListView.但刚开始的时候,会发现放入的子ListView会显示不完全(我这里只显 ...

  9. HashMap源码解读(转)

    http://www.360doc.com/content/10/1214/22/573136_78188909.shtml 最近朋友推荐的一个很好的工作,又是面了2轮没通过,已经是好几次朋友内推没过 ...

  10. 采用DWR、maven保存数据到数据库

    一.原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术 ...