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. Linux 环境下wordpress后台安装主题及插件需要FTP帐号怎么办?

    vi httpd.conf 查看user是哪个用户  我的是daemon 然后执行 chown daemon:daemon -R /data/wordpress /data/wordpress 是我的 ...

  2. GitHub从注册到使用

    GitHub是最流行的代码库,里面存储着丰富的优秀的开源代码,不仅如此,作为一款免费的代码存储利器也是很牛逼,支持各种编程语言,代码显示效果堪称完美,可以随时随地查看自己记录的笔记 GitHub的好处 ...

  3. [iOS]在xcode的iOS虚拟机中对BLE(蓝牙4.0)进行调试

    本文档的主要内容可参考苹果官方资料: http://developer.apple.com/library/ios/#technotes/tn2295/_index.html 1. 买一个CSR蓝牙4 ...

  4. java算法 第七届 蓝桥杯B组(题+答案) 7.剪邮票

    7.剪邮票  (结果填空) 如[图1.jpg], 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,[图2.jpg],[图3.jpg]中,粉红 ...

  5. Apache Hive (二)Hive安装

    转自:https://www.cnblogs.com/qingyunzong/p/8708057.html Hive的下载 下载地址http://mirrors.hust.edu.cn/apache/ ...

  6. 一道面试题Lintcode196-Find the Missing Number

    http://www.lintcode.com/en/problem/find-the-missing-number/# Find the Missing Number Given an array ...

  7. HTML5框架、背景和实体

    -----------------siwuxie095                                 HTML5 框架         1.框架标签 <frame>   ...

  8. Java-随机数工具类

    import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import org.apache.commons.la ...

  9. http协议简析(一)

    HTTP:hype-text transfer protocol,超文本传输协议,超文本(html)在网络间(电脑与电脑之间)传输过程中所遵循的一些规则. 两台电脑之间要实现数据传输的条件 1.两台电 ...

  10. Linux ag命令

    一.简介 Ag是用C++写的,搜索速度快,比grep更有效率. 二.安装 RHEL7+ rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x8 ...