由于我的一个Private Cloud FaaS(函数计算)项目 Navagraha 使用nginx作为实现Service Mesh和API Gateway的基础框架,需要对Nginx有深入的了解,因此在这里翻译Nginx官方文档,用于之后的开发提供辅助参考。

介绍

代码组织结构

  • auto - 编译构建脚本
  • src
    • core - 基础类型和函数 - 包括string,array,log,pool等内容
    • event - 核心事件类型
      • modules - 事件通知模块,包括epoll、kqueue、select等内容
    • http - 核心HTTP模块以及通用代码
      • modules - 其他的HTTP模块
      • v2 - HTTP/2
    • mail - 邮件模块
    • os - 特定平台代码
      • unix
      • win32
    • stream - 数据流模块

头文件

在每个nginx源文件里,必然包含两个头文件 分别为

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

如果需要实现的是HTTP模块,则需要添加HTTP相关的头文件:

#include <ngx_http.h>

邮件模块则添加头文件:

#include <ngx_mail.h>

数据流模块需要添加头文件:

#include <ngx_stream.h>

整型类型

在通常开发nginx模块过程中,通常使用两种整型类型ngx_int_t或者ngx_uint_t,对应的指针类型为intptr_t和uintptr_t。

通用返回类型

在nginx模块中,很多函数使用通用的返回值类型:

  • NGX_OK - 代表操作执行成功。
  • NGX_ERROR - 代表操作执行失败。
  • NGX_AGAIN - 代表操作未执行完毕;要求重新调用该函数。
  • NGX_DECLINED - 代表操作被拒绝。
  • NGX_BUSY - 代表资源不可用
  • NGX_DONE - 代表操作执行完成或通知调用者继续执行其他操作。
  • NGX_ABORT - 代表操作的执行被中断。

错误处理

调用宏定义ngx_errno将返回最后一个系统错误代码。如果是POSIX平台的话,这个宏定义将返回errno,如果是Windows平台的是返回GetLastError()。ngx_socket_errno是返回socket最后出现错误的错误码。如果要设置errno的错误码的话,可以使用ngx_set_errno(errno) 或者 ngx_set_socket_errno(errno)。

使用ngx_errno的实例如下:

void
ngx_my_kill(ngx_pid_t pid, ngx_log_t *log, int signo)
{
ngx_err_t err; if (kill(pid, signo) == -1) {
err = ngx_errno; ngx_log_error(NGX_LOG_ALERT, log, err, "kill(%P, %d) failed", pid, signo); if (err == NGX_ESRCH) {
return 2;
} return 1;
} return 0;
}

Nginx 开发者文档翻译 - 介绍的更多相关文章

  1. nginx 官方文档翻译

    nginx(发音为"engine x")是一个由俄罗斯软件工程师Igor Sysoev编写的免费开源Web服务器.自2004年公开发布以来,nginx专注于高性能,高并发性和低内存 ...

  2. Nginx基础知识介绍

    Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...

  3. Nginx负载均衡介绍

    Nginx真心牛逼 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式 ...

  4. 3.Nginx常用功能介绍

    Nginx常用功能介绍 Nginx反向代理应用实例 反向代理(Reverse Proxy)方式是指通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并且从内部网络服 ...

  5. Nginx之基本介绍(一)

    这是一篇介绍Nginx基本信息和配置文件详情的文章,适合入门者,如果你想深入了解Nginx请绕道 什么是Nginx? Nginx是轻量级,高性能,跨平台的web服务器 Nginx的特点 更快 单个请求 ...

  6. 《基于Nginx的中间件架构》学习笔记---4.nginx编译参数详细介绍

    通过nginx -V查看编译时参数: 在nginx安装目录下,通过./configure --help,查看对应版本ngnix编译时支持的所有参数: Nginx编译参数详细介绍: --help 显示本 ...

  7. nginx 集群介绍

    nginx 集群介绍 完成一次请求的步骤 1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求 缺点:单点故障 单台服务器资源有限 单台服务器处理耗时长 ·1)部署 ...

  8. Nginx服务配置文件介绍

    LNMP架构应用实战——Nginx服务配置文件介绍 nginx的配置文件比较简单,但功能相当强大,可以自由灵活的进行相关配置,因此,还是了解下其配置文件的一此信息 1.Nginx服务目录结构介绍 安装 ...

  9. nginx的负载介绍

    指定上游服务器的upstream与server指令 指令介绍 Syntax: upstream name { ... } Default: — Context: http Syntax: server ...

随机推荐

  1. 模拟I2C协议学习点滴之程序相关定义

    由于主机和从机都会给数据线SDA发信号,比如主机先给SDA发送数据后,从机收到数据后发送应答信号将SDA拉低,故SDA类型设定为inout.而DATA设定为inout类型,是起到校验通信的作用(后续的 ...

  2. 炸掉的fft,改天再调

    #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...

  3. NetworkX系列教程(10)-算法之一:最短路径问题

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  4. CF516D Drazil and Morning Exercise【并查集,结论】

    题目描述:一棵\(n\)个点的树,设\(d(u)=\max_{v\in V}\text{dis}(u,v)\),每次询问一个数\(l\),求一个最大的联通子图\(L\),使得\(\forall u,v ...

  5. python打包成exe,太大了该怎么解决?

    这是一个很长的故事,嫌长的直接看最后的结论 事情经过 上周接了个需求,写了个小工具给客户,他要求打包成exe文件,这当然不是什么难事.因为除了写Python的,绝大多数人电脑里都没有Python编译器 ...

  6. ST表(模板)「 查询区间最值 」

    The Water Problem HDU - 5443 「 第一部分nlogn预处理   第二部分O(1)询问 」 #include <iostream> #include <bi ...

  7. python eval的用法

    >>>x = >>> eval( '3 * x' ) >>> eval('pow(2,2)') >>> eval('2 + 2' ...

  8. [HNOI2011]括号修复 / [JSOI2011]括号序列

    传送门 Solution 一道题花费了两天的时间-- 在大佬@PinkRabbit的帮助下,终于AC了,感动-- 首先,我们考虑一个括号序列被修改成合法序列需要的次数: 我们需要修改的其实是形如... ...

  9. Dockerfile 指令 WORKDIR介绍

    Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...

  10. c++ homework 1

    先交作业(急促) 电梯作业 elevator (不知道为啥,我BIN文件夹建立不了.) PTA练习 如图 如图