Nginx自定义扩展模块
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.h>都改成了#include "../../core/webserver.h"?当然也就同时要修改使用的地方如nginx/auto/sources
- 定制修改的文件(动了逻辑的)
- 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自定义扩展模块的更多相关文章
- nginx自定义模块编写-根据post参数路由到不同服务器
nginx可以轻松实现根据不同的url 或者 get参数来转发到不同的服务器,然而当我们需要根据http包体来进行请求路由时,nginx默认的配置规则就捉襟见肘了,但是没关系,nginx提供了强大的自 ...
- Nginx自定义模块编写:根据post参数路由到不同服务器
Nginx自定义模块编写:根据post参数路由到不同服务器 2014-05-05 15:27 blogread IT技术博客 字号:T | T Nginx可以轻松实现根据不同的url 或者 get参数 ...
- 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- ...
- Nginx 自定义添加Response Headers 修改server
之前说过如何隐藏Response Headers中 X-Powered-By 修改php.ini expose_php = Off service php-fpm reload 隐藏Nginx版本号 ...
- nginx自定义500,502,504错误页面无法跳转【转】
1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / { proxy_pass http://tomcat_app108; ...
- http 错误代码解释 && nginx 自定义错误【转】
如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求. 此状态代 ...
- nginx 自定义代理返回 404
在nginx的http段,加上一面的配置 proxy_intercept_errors on;//自定义代理返回的404错误提示
- nginx自定义模块记录上游服务器特定响应头
功能,服务器通过扩展自定义命令,记录上游的服务器返回的特定响应头内容,记录到本地文件中 代码如下: /* * Copyright (C) Ciaos */ #include <ngx_confi ...
- Nginx 自定义404、500、502 页面
利用nginx的反向代理来实现 服务器404 和500 等状态码的自定义页面 1.nginx配置文件 nginx.conf 配置开启代理错误拦截 和配置页面 下划线部分 http { ...... ...
随机推荐
- RocketMQ初探(一)
初学RocketMQ,认识一门新技术,还是哪三问:是什么?能干什么?怎么用? 消息中间件主要是实现分布式系统中解耦.异步消息.流量销锋.日志处理等场景. Rocketmq是阿里捐赠给Apache的.3 ...
- C语言之单链表的使用
#include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data; struct LNode *nex ...
- Ryu控制器学习
Ryu 在Mininet环境下实现Ryu为控制器控制ARP报文的实验中学习了Ryu相关的知识,记录如下 官方文档:http://ryu.readthedocs.io/en/latest/getting ...
- Delphi数据库的三层架构的问题和解决方法
Delphi数据库的三层架构的问题和解决方法 原创 2014年03月26日 16:26:03 标签: Delphi / 数据库三层架构 / DCOM / DCOMConnection 790 //-- ...
- 第2章地址Address(WCF全面解析3)
WCF顾明思义,就是在Windows平台下解决通信(C,Communication)的基础框架(F,Foundation)问题. 终结点是WCF最为核心的对象,因为它承载了所有通信功能.服务通过相应的 ...
- cdoj913-握手 【Havel定理】
http://acm.uestc.edu.cn/#/problem/show/913 握手 Time Limit: 2000/1000MS (Java/Others) Memory Limit ...
- CocoaPods私有库!!!!!!!!!!!(装逼特技)
1http://www.jianshu.com/p/4b63dfbd8be7 2 修改工程下的.podspec文件,如 注意1: 验证库是否正确: pod lib lint --verbose -- ...
- EXADATA智能扫描
提要:查询特定的要求:智能扫描只可用于完整的表或索引扫描.智能扫描只能用于直接路径读取: 直接路径读取会自动用于并行查询. 直接路径读取可以用于串行查询.默认情况下不使用它们进行小型表的串行扫描.使用 ...
- LA3983 捡垃圾的机器人
Problem C - Robotruck Background This problem is about a robotic truck that distributes mail package ...
- TF Boys (TensorFlow Boys ) 养成记(五): CIFAR10 Model 和 TensorFlow 的四种交叉熵介绍
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...