1. 概述

2. 扩展模块(假设根目录名称为nginx)

  • nginx/configure文件中可以修改配置文件路径(编译时使用):

    • 例如像把配置文件从默认的nginx.conf改为webserver.conf:NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx}改为NGX_PREFIX=${NGX_PREFIX:-/xxx/xxx/xxx}
  • nginx/src/core/ngx_conf.c中的ngx_conf_full_name是配置文件名的配置?
  • nginx/src/core/ngx_log.c中是日志的配置?
  • 处理流程
    • 各个模块中会以固定格式,定义一些结构体,ngx_http_core_loc_conf_t* clcf;并设置一个clcf->handler
    • 先根据nginx/auto/modules中注册的模块,到(ngx_http_apptest_handler、xngx_recom_handler、ngx_recom_handler方法?怎么判断转发到哪一个模块?
    • 然后每个模块都初始化一个自定义的Entry类(相当于Web api中的路由转发设置,只是自行进行了解析url和转发调用各个处理函数),用于做路由转发(根据url调用不同的逻辑处理类)

3. 项目学习

  • 为什么把名称中的nginx改为了webserver?因为用了BSD协议,随便改??

    • 为什么把默认引用的<nginx.h>都改成了#include "../../core/webserver.h"?当然也就同时要修改使用的地方如nginx/auto/sources

      • nginx/src/core/ngx_module.h
      • nginx/src/stream/ngx_stream_variables.c
      • nginx/src/os/unix/ngx_posix_init.c
      • nginx/src/http/v2/ngx_http_v2_filter_module.c
      • nginx/src/http/ngx_http_header_filter_module.c
      • nginx/src/http/ngx_http_special_response.c
    • 为什么把Copyright中的Nginx都改成了webserver?
      • nginx/auto/cc/conf等
    • 为什么把core下面nginx改成了webserver?
  • 定制修改的文件(动了逻辑的)
    • nginx/conf(修改配置文件位置)
    • nginx/auto/cc/gcc
    • nginx/auto/lib/conf + nginx/auto/lib/app/conf(前者引用后者)
    • nginx/auto/install(调整安装过程,如拷贝一些配置文件到指定位置)
    • nginx/auto/make(编译相关,如g++)
    • nginx/auto/modules(注册自定义及使用到的扩展模块)
    • nginx/auto/options(一些nginx开关,如是否打开代理、重写等)
    • nginx/src/core/ngx_log.c
    • nginx/src/core/ngx_conf.c
    • nginx/src/core/nginx.c重命名为nginx/src/core/webserver.c,并没有修改逻辑?

Nginx自定义扩展模块的更多相关文章

  1. nginx自定义模块编写-根据post参数路由到不同服务器

    nginx可以轻松实现根据不同的url 或者 get参数来转发到不同的服务器,然而当我们需要根据http包体来进行请求路由时,nginx默认的配置规则就捉襟见肘了,但是没关系,nginx提供了强大的自 ...

  2. Nginx自定义模块编写:根据post参数路由到不同服务器

    Nginx自定义模块编写:根据post参数路由到不同服务器 2014-05-05 15:27 blogread IT技术博客 字号:T | T Nginx可以轻松实现根据不同的url 或者 get参数 ...

  3. nginx自定义模块编写-实时统计模块--转载

    原文:http://www.vimer.cn/2012/05/nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E7%BC%96%E5%86%99- ...

  4. Nginx 自定义添加Response Headers 修改server

    之前说过如何隐藏Response Headers中 X-Powered-By 修改php.ini expose_php = Off service php-fpm reload 隐藏Nginx版本号  ...

  5. nginx自定义500,502,504错误页面无法跳转【转】

    1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / {            proxy_pass http://tomcat_app108;   ...

  6. http 错误代码解释 && nginx 自定义错误【转】

    如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求. 此状态代 ...

  7. nginx 自定义代理返回 404

    在nginx的http段,加上一面的配置 proxy_intercept_errors on;//自定义代理返回的404错误提示

  8. nginx自定义模块记录上游服务器特定响应头

    功能,服务器通过扩展自定义命令,记录上游的服务器返回的特定响应头内容,记录到本地文件中 代码如下: /* * Copyright (C) Ciaos */ #include <ngx_confi ...

  9. Nginx 自定义404、500、502 页面

    利用nginx的反向代理来实现 服务器404 和500 等状态码的自定义页面 1.nginx配置文件 nginx.conf 配置开启代理错误拦截 和配置页面  下划线部分  http { ...... ...

随机推荐

  1. 在kindeditor 获取textarea 中 输入的值

    要在kindeditor 获取textarea 中 输入的值 必须在kindeditor创建的时候添加下面红色字体的代码     kindeditor创建代码如下: var editor;KindEd ...

  2. Shiro的校验Session是否过期处理的过程

    首先开启定时扫描活跃的session进行校验 <!-- shiro会话管理 --> <!-- 即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中:会话可以是普通 Jav ...

  3. 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题

    在运用Entity Framework调用存储过程的时候,遇到"调用EF的存储过程报"调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题 ...

  4. JS比较两个数组是否相等 是否拥有相同元素

    Javascript怎么比较两个数组是否相同?JS怎么比较两个数组是否有完全相同的元素?Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都 ...

  5. java算法 蓝桥杯 文化之旅

    问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化 ...

  6. Callable接口使用以及计算斐波那契数字的数值总和

    一.简单使用 Runnable是执行工作的独立任务,但是它不返回任何值.如果你希望任务完成的时能够返回一个值,那么可以实现一个Callable接口.在Java SE5中引入的Callable是一种具有 ...

  7. 146. LRU Cache (List, HashTable)

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  8. 规范抢先看!微信小程序的官方设计指南和建议

    基于微信小程序轻快的特点,我们(微信官方)拟定了小程序界面设计指南和建议. 设计指南建立在充分尊重用户知情权与操作权的基础之上.旨在微信生态体系内,建立友好.高效.一致的用户体验,同时最大程度适应和支 ...

  9. Tomcat安装 以Linux 分支 Ubuntu Server 为例

    以Linux 分支 Ubuntu Server 为例.一.相关目录及作用说明 /etc/tomcat6 - 全局配置 /usr/share/tomcat6/ - 程序主目录 /usr/share/to ...

  10. Opencv 图像矩

    #include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...