nginx的锁】的更多相关文章

一.原理 nginx的锁是基于共享内存实现的,这点跟redis中利用一个存储(也就是一个键值对)来实现锁的原理是一致的,每一项操作通过检查锁对象的lock域是否为0,来判断能否获取锁并尝试获取锁. 二.锁的类定义 1. 类定义 //锁的定义 typedef struct { #if (NGX_HAVE_ATOMIC_OPS) ngx_atomic_t *lock; //如果支持原子锁的话,那么使用它 #if (NGX_HAVE_POSIX_SEM) ngx_atomic_t *wait; ngx…
#include <stdio.h> #include <stdint.h> #include <unistd.h> /* typedef unsigned long ngx_atomic_uint_t; typedef volatile ngx_atomic_uint_t ngx_atomic_t; typedef long ngx_atomic_int_t; #define ngx_atomic_cmp_set(lock, old, set) __sync_bool…
前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现.应该说大体上对nginx已经不再陌生和神秘. 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并发模型的应用,但为了网络请求的安全性,必须要使用到锁,那么这个进程锁如何实现呢? 1. nginx进程锁的作用 nginx是多进程并发模型应用,直白点就是:有多个worker都在监听网络请求,谁接收某个请求,那么后续的事务就由它来完成.如果没有锁的存在,那么就是这种场景,当一个请求被系统接入后,所以…
配置文件介绍 主要有两部分:分别是 main:主体部分 http{}:虚拟主机配置部分 配置指令主要以分号结尾:配置语法:directive value1 [value2 ....] 支持使用的变量 模块内置的变量 自定义变量:set var_name value 主配置段的指令类别: 用于调试和定位问题: (1)daemon [on|off]: 是否以守护进程的方式启动nginx: (2)master_press [on|off]: 是否以master/worker模型来运行nginx: (3…
Nginx配置文件结构 nginx配置文件由指令(directive)组成,指令分为两种形式,简单指令和区块指令. 一条简单指令由指令名.参数和结尾的分号(;)组成,例如: listen backlog ; ,其中“listen”是指令名,“80”.“backlog”.“4096”都是参数,“;”表示指令结尾. 区块指令由指令名.参数和花括号({})组成,例如: location /imag {} ,其中“location”是指令名,“/imag”是参数,“{}”用于包括其它指令和表示结尾.如果…
安装依赖软件 1.安装编译工具gcc gcc是一个开源编译器集合,用于处理各种各样的语言:C.C++.Java.Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86.AMD64.PowerPC.ARM.MIPS等. 首先确定系统是否安装gcc [root@localhost ~]# gcc 若输出以下消息则已经安装gcc: 若输出以下消息则未安装gcc: 使用包管理器yum安装gcc: [root@localhost ~]# yum -y install gcc 2.安装PCRE…
1.下载nginx安装包 下载地址:http://nginx.org/en/download.html(里面有nginx各个版本) 解压到指定目录: 解压出来的目录简单介绍: src:软件的所有源代码 man:man文档 auto:脚本文件,和configure脚本程序有关 conf:配置文件 html:存放了两个后缀为.html的静态页面文件 2.编译安装常用参数 --prefix=<path>:指定nginx软件的安装路径 --prefix=<path>:指定nginx可执行文…
目录 一.安装配置 1.安装 2.配置文件 3.测试和启动 二.功能 1.虚拟主机 1.1 基于IP 1.2 基于域名 1.3 基于端口 2.访问控制 3.用户认证 4.文件共享 5.文件别名 6.状态模块监控 7.日志 7.1 错误日志 7.2 访问日志 7.3 错误界面优雅显示 7.4 服务匹配 7.5 跳转 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步. 个人博客:传送阵 笔者微信:zhanghe15069…
应用场景优缺点 应用场景 // 1.静态请求 // 2.反向代理 // 3.负载均衡 // 4.资源缓存 // 5.安全防护 // 6.访问限制IP // 7.访问认证 /* 核心主要是以下三个应用: 静态资源服务: 通过本地文件系统提供服务 反向代理服务: Nginx的强大性能,缓存,负载均衡 API: OpenResty */ 优点 /* 1.功能模块少 2.代码模块少 3.高可靠,热部署,可扩展. 4.BSD许可证. 是一个给于使用者很大自由的协议,BSD 代码鼓励代码共享,但需要尊重代码…
1. 概念 1.1. 消息通知机制:同步synchronous,异步asynchronous 同步:等待对方返回信息 异步:被调用者通过状态.通知或回调通知调用者 状态:调用者每隔一段时间就需要检查一次(盲等): 通知:调用着需要每隔一段时间检查一下请求是否被回应(标志位被置为ready): 调用:调用者留下联系方式,如果请求ready就会被通知 1.2. 调用者等待结果返回之前所处的状态:阻塞:block,非阻塞:noblock 阻塞:调用结果返回之前,调用者会被挂起: 非阻塞:调用结果返回之…