【Nginx】如何使用http配置
处理http配置项可以分为下面4个步骤:
1)创建数据结构用于存储配置项对应的参数
2)设定配置项在nginx.conf中出现时的限制条件与回调方法
3)实现第2步中的回调方法,或者使用Nginx框架预设的14个回调方法
4)合并不同级别的配置块中出现的同名配置项
一、分配用于保存配置参数的数据结构
创建结构体(命名例子:ngx_http_mytest_conf_t)来存储配置项的参数值,使用ngx_http_module_t中的create_main_conf,create_srv_conf、create_loc_conf这三个回调方法把我们分配的用于保存配置项的结构体传递给http框架,即生成结构体。
使用结构体来存储配置项的参数值的原因:多个location块(http块、server块)中的相同配置项是允许同时生效的,即刚刚定义的结构体在Nginx的内存中会保存许多份,所以不能使用全局变量。
定义三个回调方法的原因:
http框架定义了3个级别的配置main、srv、loc,分别表示直接出现在http{}、server{}、location{}块内的配置项。当遇到http{}配置块时,http框架会调用以上三个方法;当遇到server{}块时会再次调用所有http模块的create_srv_conf,create_loc_conf回调方法;当遇到location{}时会调用create_loc_conf回调方法。
一个create_loc_conf方法的例子:
static void *ngx_http_mytest_create_loc_conf(ngx_conf_t *cf)
{
ngx_http_mytest_conf_t *mycf;
mycf=(ngx_http_mytest_conf_t *)ngx_pcalloc(cf->pool,sizeof(ngx_http_mytest_conf_t));
if(mycf==NULL)
return NULL:
mycf->test_flag=NGX_CONF_UNSET;
mycf->test_num=NGX_CONF_UNSET;
//...类似上面的赋值
return mycf;
}
二、设定配置项的解析方法
使用ngx_command_t结构来配置配置项:
struct ngx_command_s
{
ngx_str_t name;//配置项名称
ngx_uint_t type;//决定配置项可以在哪些块出现,以及可以携带的参数类型和个数
char *(*set)(ngx_conf_t *cf,ngx_command_t *cmd,void *conf);//使用14种预设方法解析配置项
ngx_uint_t conf;
ngx_uint_t offset;
void *post;
}ngx_command_t;
例子:使用14种预设的方法解析配置项
假设nginx.conf中有个配置项名称为test_flag,后面携带一个参数,取值必须是on或者off,故使用ngx_http_mytest_conf_t结构体中的ngx_flag_t my_flag成员来保存。
static ngx_command_t ngx_http_mytest_commands[]=
{
ngx_string("test_flag"),
NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
ngx_conf_set_flag_slot,//预设方法
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_mytest_conf_t,my_flag),
NULL},
ngx_null_command
};
三、自定义配置项处理方法
先自定义结构体存储配置项参数值,再编写set方法。
四、合并配置项
调用ngx_http_module_t结构体中的merge_loc_conf方法,如何合并取决于具体的merge_loc_conf实现
【Nginx】如何使用http配置的更多相关文章
- Nginx反向代理的配置
Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之 ...
- nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路
前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...
- nginx配置ssl双向验证 nginx https ssl证书配置
1.安装nginx 参考<nginx安装>:http://www.ttlsa.com/nginx/nginx-install-on-linux/ 如果你想在单IP/服务器上配置多个http ...
- Nginx+tomcat负载均衡配置
Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK ...
- nginx+tomcat集群配置(2)---静态和动态资源的分离
前言: 在web性能优化的领域, 经常能听到一个词, 就是静态/动态资源分离. 那静态/动态资源分离究竟是什么呢? 本文不讲文件系统服务, 云存储, 也不讲基于CDN的优化. 就简单讲讲基于nginx ...
- nginx+tomcat集群配置(1)---根目录设定和多后端分发配置
前言: 对于javaer而言, nginx+tomcat集群配置, 已然成了web应用部署的主流. 大公司如此, 小公司亦然. 对于个人开发者而言, 资源有限, 往往多个web应用混部于一台服务器(云 ...
- nginx反向代理的配置优化
作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...
- nginx的安装与配置
1.nginx的安装与配置 编译安装nginx需要实现安装开发包组“Development tools”和“Server Platform Development”.“Desktop Platform ...
- nginx上用fastcgi配置python环境
费了2天的功夫,翻阅了无数的中文.英文资料,终于搞定.写下此文留待以后翻阅用 本文环境,centOS 5.4 ,Nignx-0.8.49, Python 2.6.5 ========== ...
- Nginx高性能服务器安装、配置、运维 (5) —— Nginx虚拟主机配置
六.Nginx虚拟主机配置 建立基于域名的虚拟主机: (1)建立基于域名的虚拟主机配置文件(以abc.com为例): (2)更改虚拟主机配置文件: 更改配置如下(更改部分即可): server { l ...
随机推荐
- yii 和 zend studio 集成
yii是基于测试驱动的,而zend studio是一个好用的ide.集成就是必须的. 本文适合喜欢使用ide的开发者,vim用户或者文本编辑器使用者请忽略. 本文使用的是最新的zend studio ...
- TensorFlow低阶API(二)—— 张量
简介 正如名字所示,TensorFlow这一框架定义和运行涉及张量的计算.张量是对矢量和矩阵向潜在的更高维度的泛化.TensorFlow在内部将张量表示为基本数据类型的n维数组. 在编写TensorF ...
- cmd命令002
cd..--> 返回上一级目录 cd\ --> 返回根目录"cd /d e:"--> 将当前盘符切换到e盘,"cd users/admin"- ...
- uva1412 Fund Management
状压dp 要再看看 例题9-17 /* // UVa1412 Fund Management // 本程序会超时,只是用来示范用编码/解码的方法编写复杂状态动态规划的方法 // Rujia Liu ...
- WebGL 绘制Line的bug(二)
上一篇文章简单介绍了WebGL绘制Line的bug,不少朋友给我发了私信,看来这个问题大家都遇上过哈.今天这篇文章会讲述解决这个问题的work around. 基本思路 上一篇文章结尾简单提了下解决的 ...
- mongdb查询数据并且返回数据条数
var totall; var a = db.db("Magiccat").collection("jishi_content").find().count({ ...
- URAL1966 Cipher Message 3
题目描述 题解: 能看出来的是,每一组数只能改最后一位,所以前$7$位动不了. 所以$KMP$跑一跑. 重点在于最后一位怎么搞. 如果$KMP$跑完了还没找到合适的位置,直接$puts("N ...
- Linux vim指令学习
每天查看一遍vim文档 Linux系统下命令:$ vimtutor 1.可视模式([v] 或者 [Ctrl + v])下的[U]把选中的文本变为大写 .[u]把选中的文本变为小写. 2.[数字] + ...
- BeautifulSoup与aiohttp的简单应用-爬取《网上中华五千年》音频
香港电台的节目素质都比较不错,其中有个<中华五千年>的节目是以情景剧与旁白的形式来展示历史故事,由传说时代一直到民国,1983年首播至2000年,非常长寿的一个节目.网上能找到版本声音非常 ...
- css position是前端的你了解多少?
此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...