《深入理解Nginx》阅读与实践(一) Nginx安装配置与HelloWorld

最近在读陶辉的《深入理解Nginx:模块开发与架构解析》,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节。侯捷在他的《STL源码剖析》的自序里说过,“追踪一流作品并于其中吸取养分,远比自己关起门来写个三流作品,价值高得多”。我个人比较喜欢《深入理解Nginx》这本书,它讲解的很全面,相关的知识都会有所介绍,整体的脉络比较明晰。只是涉及东西比较多,有时真希望纸质文档也能像在线lxr那样给结构体和函数的使用处和定义做一个超链接,这样来回跳转查阅不会太麻烦。纸上得来终觉浅,绝知此事要躬行,读书的时候自然少不了实际地动手。这个系列的博文便是对学习过程的梳理和动手过程的记录。不过虽希望成“系列”,限于时间和精力,以及对nginx刚刚上手,我很难保证下一篇什么时候能写好,还请谅解。

另外,原书对实际动手时遇到的一些细节问题已有提及,我便不再赘述。如无特殊提示和说明,代码均为原书上的代码。

一、安装与配置

首先需要安装Nginx要用到或者可能用到的软件:GCC、pcre、zlib、OpenSSL。由于原书使用yum直接安装,我又懒得在旧版(10.04)的Ubuntu下折腾安装包,因此直接搞了个Fedora19虚拟机也就能直接用yum了。虽然看上去也挺麻烦,其实也不过是下下ISO镜像、配配vim、搞个文件共享而已,轻车熟路。另外要注意的是:

我的Fedora19不带fastest-mirror,最好先装下这个yum的插件,不然后面的下载可能会慢死人不偿命;

如果系统不带C库手册,为了便于编码时查阅C库函数,请yum install man-pages。

配置过程包括Linux内核参数优化(/etc/sysctl.conf)、Nginx源码配置(可以直接下载、解压、configure、make、make install)、nginx.conf的配置,照着原书上的来就是,nginx.conf的具体实践留给下文。不过你可以借机照着原书学学configure文件的写法,这可是Linux下的一项通用技能。

另外为了方便使用,我建立了个软链接:先删除/usr/bin/nginx,然后ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx。

二、HelloWorld的实现

Nginx封装了一些数据结构,了解下即可,马上就要用到。跟随第三章的思路,要知道如何将自己写的模块编译进Nginx:最简单且不易出错的方法是编写config文件,其中包括模块名称、所有的模块名称(使用递归赋值)、模块源代码路径,原书的例子:

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

config文件

然后用C语言编写模块源码。书中介绍了几个数据结构和函数,经过梳理,它们的关系是这样的:

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/web/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, nginx
, 模块
, 配置
, nginx 第三方模块
, nginx的安装与配置
, 深入理解c
, 编译进nginx
, 制作nginx镜像
, nginx镜像
直接
nginx hello world、nginx helloworld、深入浅出hello world、深入理解nginx、深入理解nginx 第二版,以便于您获取更多的相关知识。

时间: 2024-09-05 18:28:54

《深入理解Nginx》阅读与实践(一) Nginx安装配置与HelloWorld的相关文章

nginx环境openfire xmpp 集群安装配置详解

openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.openfire安装和使用都非常简单,并利用Web进行管理.openfire集群,还比较容易配置的,但是没有连接池,这一缺点,我们可以用nginx来弥补. 一,服务器说明 192.168.10.235    //openfire  192.168.10.203    //openfire  192.168.10.208    //openfire    192.168.10.208    //ng

Nginx中nginx_upload_module上传模块安装配置

安装nginx_upload_module模块    代码如下 复制代码 ./configure –add-module=/usr/local/nginx_upload_module-* make make install 重启nginx即可 以下是我的nginx配置文件 前端页面提交的时候直接提交到 http://dev.local/upload 即可  代码如下 复制代码 server { listen 80; server_name test.local; index index.php

《深入理解Nginx》阅读与实践(三)

使用upstream和subrequest访问第三方服务 一.upstream:以向nginx服务器的请求转化为向google服务器的搜索请求为例(一)模块框架 首先要明确的是,这里是编写一个使用upstream的模块,而不是编写upstream模块.因此,和HelloWorld类似,模块结构体ngx_http_mytest_module.模块上下文结构体ngx_http_mytest_module_ctx.数组ngx_http_mytest_command[].方法ngx_http_mytes

《深入理解Nginx》阅读与实践(二) 配置项的使用

HelloWorld的完成意味着已经踏入了nginx的大门,虽然很振奋人心,但在编写中仍有很多疑惑的存在:nginx.conf的配置项中各个参数是如何读入程序中的?ngx_command_t如何完成配置项的读入工作?名称相同的配置项的冲突如何解决?HelloWorld中的ngx_http_module_t何以称为模块的上下文?同时我在读第4章"配置项的使用"时又有成见:不就是各种琐碎的参数设置嘛,有什么好读的?(这个成见来自于UNP中某一章节套接字选项)不过经过仔细阅读并实践这部分内容

全面了解Nginx中的HTTP协议相关模块配置_nginx

要理解 HTTP 模块配置解析的过程,首先需要对 nginx 的配置文件结构做一个了解 nginx 的配置文件是用树状结构组织的,每个 NGX_CORE_MODULE 作为根统领着其下的所有配置项 而如下图所示,HTTP 模块的配置被分成了 main.server.location 三层 整个 nginx 配置解析的过程其实就是这棵树的深度遍历过程 而遍历 HTTP 子树的函数就是下面要介绍的 ngx_http_block 配置文件解析 -- http 配置块当我们需要使用 http 模块的时候

BIWORK 分区表阅读与实践笔记

/*************************************************************** BIWORK 分区表阅读与实践笔记 Note: 示例中使用到了SQL Server 2000的 Demo Database, 可以从此链接中下载 http://www.microsoft.com/en-us/download/confirmation.aspx?id=23654 在检查删除Partition Function 以及Partition Scheme 时,

nginx技术(2)nginx的配置详解

nginx的配置 1,启动nginx [root@centos6 nginx-1.2.9]# /usr/sbin/nginx -c /etc/nginx/nginx.conf 启动nginx [root@centos6 nginx-1.2.9]# ps -ef|grep nginx 查看进程 root 5479 1 0 04:15 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 548

Nginx安装配置PageSpeed模块实现网站加速

  作为Nginx组件,ngx_pagespeed将重写你的网页,让用户以更快的速度进行访问.重写的工作包括压缩图片.缩减CSS和JavaScript.扩展缓存时间,同样还包括其它一些最佳实践: 优化缓存--整合应用程序的数据和逻辑 最小化round-trip次数--削减连续的请求/响应周期数 最小化请求开销--削减上传大小 最小化负载大小--削减响应.下载及缓存页面大小 优化浏览器渲染--改善浏览器页面布局 移动方面的优化--优化站点移动网络和设备方面的相关特性 下载解压PageSpeed模块

Nginx安装配置PHP(FastCGI)环境的教程

这篇是Nginx安装配置PHP(FastCGI)环境的教程.Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用. 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTTP server都支持FastCGI,包括Apache.Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP. FastCGI是从CGI发展改进而来的.传统CG