Nginx版本的“helloworld”

Nginx模块概述

Nginx的模块不能够像Apache那样动态添加,所有的模块都要预先编译进Nginx的二进制可执行文件中。

Nginx模块有三种角色:

(1)Handlers(处理模块)–用于处理HTTP请求并输出内容。

(2)Filters(过滤模块)–用于过滤Headler输出的内容。

(3)Load-balancers(负载均衡模块)–当有多台服务器供选择时,选择一台后端服务器并将HTTP请求转发到该服务器。

hello world模块编写与安装

(1)执行以下命令,在该目录内编写我们的Nginx模块:

mkdir -p /opt/nginx_hello_world

cd /opt/nginx_hello_world

(2)开始创建nginx模块所需的配置文件(名为config)

vim /opt/nginx_hello_world

然后输入以下内容保存并退出:

ngx_sddon_name=nginx_http_hello_world_module
HTTP_MODULES="$HTTP_MODULES ngx_http_hello_world_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_world_module.c"
CORE_LIBS="$CORE_LIBS -lpcre"

(3)创建Nginx的模块c程序文件(格式为“ngx_http_模块名称_module.c”,本例中为:ngx_http_hello_world_module.c)

vim /opt/nginx_hello_world/ngx_http_hello_world_module.c

#include <ngx_config.h>
#include<ngx_core.h>
#include<ngx_http.h>

static char *ngx_http_hello_world(ngx_conf_t *cf,ngx_command_t *cmd,void *conf);

static ngx_command_t ngx_http_hello_world_commands[]={
{
ngx_string("hello_world"),
NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
ngx_http_hello_world,
0,
0,
NULL
},
ngx_null_command
};

static u_char ngx_hello_world[]="hello world";
static ngx_http_module_t ngx_http_hello_world_module_ctx ={
NULL,
NULL,

NULL,
NULL,

NULL,
NULL,

NULL,
NULL
};
ngx_module_t ngx_http_hello_world_module ={
NGX_MODULE_V1,
&ngx_http_hello_world_module_ctx,
ngx_http_hello_world_commands,
NGX_HTTP_MODULE,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NGX_MODULE_V1_PADDING
};

static ngx_int_t ngx_http_hello_world_handler(ngx_http_request_t *r)
{
ngx_buf_t *b;
ngx_chain_t out;

r->headers_out.content_type.len = sizeof("text/plain") - 1;
r->headers_out.content_type.data = (u_char *)"text/plain" ;

b= ngx_pcalloc(r->pool,sizeof(ngx_buf_t));

out.buf =b;
out.next =NULL;

b->pos=ngx_hello_world;
b->last =ngx_hello_world +sizeof(ngx_hello_world);
b->memory =1;
b->last_buf =1;

r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_length_n =sizeof(ngx_hello_world);
ngx_http_send_header(r);

return ngx_http_output_filter(r,&out);
}
static char *ngx_http_hello_world(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_hello_world_handler;
return NGX_CONF_OK;

}

(4)参考我的nginx安装那一篇Nginx安装博客在这一步稍有不同

**./configure –prefix=/usr/local/nginx –add-module=/opt/nginx_hello_world

make&&make install**

(5)配置nginx.conf(/usr/local/nginx/conf/nginx.conf),在server部分增加以下内容:

**location = /hello{

hello_world;

}**

(6)启动Nginx,(Nginx的启动),用浏览器访问http://localhost/hello,就可以看到编写的Nginx Hello World 模块输出的文字“hello world”。

下篇写代码分析

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-13 09:52:10

Nginx版本的“helloworld”的相关文章

修改NGINX版本名称为任意WEB SERVER

下载好Nginx的安装文件nginx-1.6.0.tar.gz,并把它解压. wget http://nginx.org/download/nginx-1.6.0.tar.gz tar xzvf nginx-1.2.3.tar.gz 然后我们修改src/core/nginx.h. #define NGINX_VERSION "1.2.3" #define NGINX_VER "nginx/" NGINX_VERSION #define NGINX_VAR "

nginx版本隐藏以及访问状态

1:nginx版本隐藏之前访问 [email protected] conf]# curl -I http://www.zxl.com HTTP/1.1 200 OK Server: nginx/1.8.0 Date: Sat, 19 Dec 2015 14:07:29 GMT Content-Type: text/html Content-Length: 44 Last-Modified: Fri, 18 Dec 2015 05:23:18 GMT Connection: keep-alive

mysql tomcat redis nginx 版本的查看方法

1 mysql版本查看 进入到mysql的安装目录,在bin下找到mysql命令.执行mysql --version命令.或者直接find / -name mysql,找到mysql命令后执行mysql --version命令. 2 查看tomcat的版本: 找到tomcat的安装目录,在bin下找到version.sh脚本,然后直接执行.如果没有version.sh脚本,可以找一下 catalina.sh脚本,然后执行catalina.sh version 命令.如果找不到安装目录,那就直接f

通过gitweb管理Puppet配置(nginx版本+lighttpd版)

Puppet路径为:/etc/puppet 软件版本:gitweb-1.7.1-3.el6_4.1.noarch git-1.7.1-3.el6_4.1.x86_64 fcgi-2.4.0-12.el6.x86_64 spawn-fcgi-1.6.3-1.el6.x86_64 nginx version: nginx/1.6.2 lighttpd/1.4.35 (ssl) - a light and fast webserver 一.建立puppet git仓库 1.进入puppet 的目录 #

EJB2.0版本的HelloWorld

EJB2.0版本的HelloWorld 虽然EJB3.1已经出来了,可是EJB2.0的项目还需要维护啊.下面写个简单EJB2.0的HelloWorld程序,练练手. 环境: JBoss 4.0.2 JDK1.5 IDEA8.1.4 一.开发EJB组件 1.开发Bean类 package lavasoft.testejb20; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** * Bean类 * 所有具体的业务逻辑

修改NGINX版本名称伪装任意

这里把任意改称hello修改NGINX版本名称伪装任意 无论是作为Web服务器或其他类型程序的反向代理服务器,Nginx("engine x")都有着高性能且轻量级的优势.其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好.这也使得Nginx在如今不管是存放在高配独立服务器上的大型的门户,还是存放在迷你64M内存VPS上的小型的个人博客,Nginx都在被广泛使用着. 国内淘宝.新浪.网易.腾讯等都在使用.其中淘宝正是基于原作者的BSD-like

Nginx 版本快速升级切换

前言:本文章适合有Linux基础者阅读,需掌握源码方式安装nginx(文中作者直接省略了nginx的源码安装过程) 1.当前系统环境 系统 主机名 IP地址 Centos 7.4 xmh 10.0.0.200 2.nginx版本当前版本:nginx-1.12.2新版本:nginx-1.14.2本文章使用源码包方式安装nginx nginx存放:/application nginx命名:以nginx版本命名 需求:需要将正在运行的nginx-1.12.2版本快速切换到nginx-1.14.2 3.

centos7安装指定编译nginx版本

1.yum下载依赖 yum install -y pcre pcre-develyum install -y zlib zlib-develyum install gcc-c++ -yyum install -y openssl openssl-devel 2.下载nginx版本,可以指定版本 wget -c https://nginx.org/download/nginx-1.16.0.tar.gz 3.解压nginx包 tar xf nginx-1.16.0.tar.gzcd nginx-1

nginx 版本信息隐藏

今天忽然想在搞搞nginx ,弄一个版本号隐藏吧! 算是一个安全的优化吧.注意这里是在编译之间要做的事. 1.自己搭建了一个nginx的服务器,在curl的时候,有如下提示: curl -I 10.0.0.231  (直接curl的是ip地址)    HTTP/1.1 500 Internal Server Error    Server: nginx/1.6.2    Date: Wed, 10 Sep 2014 02:53:18 GMT    Content-Type: text/html