Master Nginx(7) - Nginx for the Developer
Caching integration
No application caching
Caching in the database
Caching in the filesystem
Changing content on-the-fly
The addition module
The sub module
The xslt module
Using Server Side Includes
Decision-making in Nginx
Creating a secure link
Generating images
Tracking website visitors
Preventing inadvertent code execution
nginx作为客户端来请求其它server的数据(如upstream模块)
因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端的连接,会占用两个连接。
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务器。
nginx使用一个叫ngx_accept_disable的变量来控制是否去竞争accept_mutex锁。计算ngx_accept_disable的值,这个值是单进程的所有连接总数的1/8,减去剩下的空闲连接数量。
当ngx_accept_disable大于0时,不会去尝试获取accept_mutex锁,并且将ngx_accept_disable减1,直到小于0.
ngx_http_request_t
读取一行数据,分析出请求行中包含的method, uri, http_version信息。
ngx_http_init_request => ngx_http_process_request_line(设置读事件) => ngx_http_read_request_header => ngx_http_parse_request_line
=> ngx_http_process_request_headers(设置读事件) => ngx_http_process_request_headers => ngx_http_parse_header_line(解析一行请求头)
headers_in是一个链表结构,保存所有的请求头。ngx_http_headers_in(映射表) => ngx_http_process_host
headers_out
当nginx解析到两个回车换行符时,就表示请求头的结束。
ngx_http_process_request => ngx_http_request_handler(设置读写事件) => (read_event_handler/write_event_handler) => ngx_http_handler
read_event_handler => ngx_http_block_reading
write_event_handler => ngx_http_core_run_phases => 执行多阶段请求处理
nginx的各种阶段会对请求进行处理,最后会调用filter来过滤数据,对数据进行加工,如truncked传输,gzip压缩等。
filter是一个链表结构 => (header filter / body filter) => ngx_http_header_filter => ngx_http_write_filter
client_header_buffer_size => large_client_header_buffers 4 8k 表示有4个8k大小的buffer可用。为了保持请求行或者请求头的完整性,一个完整的请求行或请求头,需要放在一个连续的内存里面。
414 => 请求行大于一个buffer大小
400 => 请求头大于一个buffer大小
为了提高效率,采用状态机来解析请求行,
GET http://www.taobao.com/uri HTTP/1.0 此时,会忽略掉请求头中的host
Master Nginx(7) - Nginx for the Developer的更多相关文章
- Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
0. 前言 紧接上一篇,本篇文章我们尝试学习多节点部署 kubernetes 集群 并通过 haproxy+keepalived 实现 Master 节点的负载均衡 1. 实验环境 实验环境主要为 5 ...
- 苹果下如果安装nginx,给nginx安装markdown第三方插件
用brew install nginx 这样安装的是最新版的nginx, 但是在有些情况下,安装第三方插件需要特定的版本,更高一级的版本可能装不上. 它的原理是下载安装包进行自动安装,建立软链,这样就 ...
- Nginx research, nginx module development
catalog . 初探nginx架构 . handler模块 . Nginx编译.安装.配置 . Hello World模块开发 1. 初探nginx架构 nginx在启动后,在unix系统中会以d ...
- nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/nginx/conf] 12:45 [root@a02.cmsapi]$ /usr/local/nginx/sbin ...
- 启动及重新启动nginx,重启nginx后丢失nginx.pid问题解决
停止操作 停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的 步骤1:查询nginx主进程号 ps -ef | grep nginx 在进程列表里 面找master进程 ...
- nginx之 nginx + tomcat + redis 负载均衡且session一致性
说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...
- linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)
linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表 ...
- Nginx学习——Nginx启动、停止、重启和信号控制以及平滑升级
1.Nginx 启动与停止 (1)启动方式 启动格式:Nginx可执行文件地址 -c Nginx配置文件地址 /etc/local/nginx/sbin/nginx -c /root/dufy/ngi ...
- keepalived结合nginx实现nginx高可用
1.简介 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台 ...
- 快速掌握Nginx(四) —— Nginx日志切片和常用配置总结
1.Nginx日志管理 1.日志简单介绍 Nginx提供了日志记录的功能,日志文件在对我们管理网站十分有用,通过访问日志(access_log)我们可以获取请求来源.客户端信息.请求的资源等信息:通过 ...
随机推荐
- Codeforces--622A--Infinite Sequence(数学)
Infinite Sequence Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:26214 ...
- Oracle查询列重命名
select count(*) 呼入量 from crm_cisco_call_detail
- 8.22 NOIP 模拟题
8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...
- [App Store Connect帮助]二、 添加、编辑和删除用户(6)生成 API 密钥
如果已批准您访问 App Store Connect API,您可以生成 API 密钥,以便使用该密钥配置.认证和使用 App Store Connect 服务. 有关管理和保护您密钥的更多信息,请参 ...
- [Swift通天遁地]九、拔剑吧-(7)创建旋转和弹性的页面切换效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- js 调用微信浏览器内置方法,启动支付
$.post("{php echo app_url('pay/cash')}",{orderno:orderno,paytype:paytype},function(m){ //t ...
- JavaScript--innerHTML 属性
innerHTML 属性用于获取或替换 HTML 元素的内容. 语法: Object.innerHTML 注意: 1.Object是获取的元素对象,如通过document.getElementById ...
- OI——不后悔的两年
NOI2014,悲惨的考跪,99+170+130 399 Cu滚粗.最终签到了复旦的一本,还算是有点结果吧.(其实我一开始就想读复旦我会说?)回首这两年,就像一场梦一样,从一无所知的小白到进入省队再到 ...
- 什么是mycat?
Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据 ...
- Http协议详解(转)>>>写的很好
声明:本片文章非原创,仅供自己学习并分享 内容来源于博客园作者MIN飞翔的HTTP协议详解地址http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html ...