基于Nginx的系统运维_第1页
基于Nginx的系统运维_第2页
基于Nginx的系统运维_第3页
基于Nginx的系统运维_第4页
基于Nginx的系统运维_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Nginx的系统运维从代码看Nginx运维本质可伸缩性、可用性Nginx在负载均衡和Web加速服务器层面负有盛名负载均衡可伸缩性,容灾WEB加速服务器静态内容、高层次内容缓存常见Web框架应用服务器动态内容处理,如django、tomcat缓存低层次内容缓存,如redis数据库数据持久化节约机器、降低成本单节点支撑更大的负载 每请求消耗更少的资源更快投入产出比高广泛使用,经过全面考验扩展性高,大量模块提供了 足够丰富的功能可以不造轮子,只搭积木为什么选择Nginx?编译准备环境理解、执行configure编译010203修改配置熟悉配置格式了解如何明确用法 理解脚本式配置error日志编译

2、时-with-debug打开定位问题时配置日志级别debug日志定位配置错误0405安装到正确位置 开机自启Access日志分割部署access日志熟悉可利用的变量goaccess -f access.log -o report.html - real-time-html -ws-url=运维nginx的步骤缓存有效的缓存往往是提升 性能的杀器减少进程消耗降低写日志磁盘IO 使用sendfile修改操作系统配置更好的适合高并发场景提升传输效率长连接代替短连接Gzip压缩降低带宽限制速度保护应用服务器架构优化缓存keepalive长连接gzip压缩01Nginx优化限制流量access日志批量输

3、出启用sendfile等高性能配置02Linux优化提高Backlog、文件描述符、端口范 围限制TCP连接传输优化03提升性能Nginx能做些什么?事件驱动事 件 收 集、 分 发 者连接建立事 件消费者读事件消费 者写事件消费者连接关闭事件消费者异步读磁盘 事件消费者请求建立TCP 连接事件TCP连接可读事件TCP连接关闭事件TCP连接可写事件异步读磁盘成功事件定时器事件 消费者事件驱动框架eventsuse epoll;ppt素材事件驱动框架 的优点:很少的上下文 切换事件驱动框架的 缺点:阻塞操作可以轻 易的造成性能下 降线程池与事件驱动框架的结合sendfile() on purpo

4、se only works on things that use the page cache. Linus Torvaldsthread_pool default threads=32 max_queue=65536;全局配置 master_process on; worker_processesauto;worker_cpu_affinity auto;pid nginx.pid; worker_priority -10;繁忙的worker进程建立连接,处理各种请求,包括 http请求、mail请求、tcp传输清闲的master进程启动、监控worker、cache进程 接收信号命令读取、

5、解析、重载配置文件 执行binary升级Cache相关进程处理文件缓存Master-Worker进程结构Master-worker架构的优点:nginx -s reload升级Nginx监听端口复用reuseportmaster建立一个监 听socket, worker进 程间共享master为每 个worker进 程建立独立 的socketserver listen 80;server listen 80 reuseport;用lsof可以观察eventsaccept_mutex on;eventsaccept_mutex off;http listen 80 reuseport;reuse

6、port性能Linux3.9内核以上Nginx模块结构coreNGX_CORE_MODULEevent_core NGX_EVENT_MODULEngx_http_core_moduleNGX_HTTP_MODULE请求处理模块steam模块ngx_stream_core_module NGX_STREAM_MODULEupsteam相关模块响应过滤模块errlogthread_pooleventshttpstreamopensslngx_conf_module NGX_CONF_MODULENGX_MAIL_MODULEmail./configure -with-module动态模块Conf

7、igure加入模块到c代码编译进binaryload_module modules/ngx_mail_module.so启动时初始化模块数组读取load_module配置 打开动态库并加入模块数组基于模块数组开始初始化NGX_HTTP_POST_READ_PHASEreal_ip_headerNGX_HTTP_SERVER_REWRITE_PHASEIf、returnNGX_HTTP_FIND_CONFIG_PHASENGX_HTTP_REWRITE_PHASE同serverNGX_HTTP_POST_REWRITE_PHASENGX_HTTP_PREACCESS_PHASElimit_con

8、nNGX_HTTP_ACCESS_PHASEauth_basic_use r_fileNGX_HTTP_POST_ACCESS_PHASENGX_HTTP_TRY_FILES_PHASEtry_filesNGX_HTTP_CONTENT_PHASEindexNGX_HTTP_LOG_PHASEaccess_loghttp请求选择location流程监听端口1地址1+端口1监听端口2地址2+端口1serverserverserver根据HTTP头部host根据TCP四元组dstiplocationlocation根据URI合并main、server块下 的配置项 到locationserver

9、listen localhost:80; listen 8000; server_name ; location /static . location / . Server listen80;server_name fuzhong.pub;.寻找location时仅在NGX_HTTP_FIND_CONFIG_PHASE阶段进行,该阶段前会有post_read和server_rewrite阶段http模块工作流程读取配置 文件打开监 听socket启动worker进程http模块解析http配置event模块解析 event 配置stream模块解 析stream 配置监控进程状态与信号命令ht

10、tp模块 解析配置,注册handler建立location树模块回调 方法注册 handler监听端口 处理,如 reuseportmaster进程worker进程处理事件处理信 号命令接收http包头调用HTTP模块 11个阶段的内 容处理方法发送HTTP响应调用HTTP过滤 模块的过滤header和过滤body方法header过滤模块HTTP模块间的配合接收HTTP头部image_filtergzipimage_filtergzip发送HTTP头部发送HTTP包体body过滤模块limit_reqzone=req_one burst=120;limit_conn c_zone 1;sati

11、sfy any;allow /32; auth_basic_user_file access.pass;gzip on;image_filter resize 80 80;preaccess阶段limit_conn模块limit_req模块access阶段auth_basic模块access模块content阶段http内容模块4http内容模块5模块变量解析出变量的方法变量名提供变量的模块使用变量的模块,比 如http的access日志解析nginx.conf时定义变量使用方式变量值HTTP头部 读取完毕处理请求Nginx启动log_format main $remote_addr$remo

12、te_user $request $status $host $body_bytes_sent$gzip_ratio $http_referer脚本scriptip指向指令数组try_files $uri $uri/ /index.php?$args;return 401 Access denied because token is expired; if ($scheme != https) rewrite $uri permanent;执行每条指令ngx_http_rewrite_module模块配置 中存放解 析的指令ngx_http_fastcgi_module模块配置 中存放解 析的

13、指令2个REWRITE_PHASE请求开始执行脚本CONTENT_PHASE阶段执行脚本Nginx启动时读取nginx.conf中的脚本类配置,编译为脚本指令数组存放 在相应模块的配置中uwsgi_store /data/www$original_uri; uwsgi_pass localhost:9000;决定模块顺序auto/modules找到请求http request line: “GET /“从uri中寻找到请求起始 LOG,http header: “”确 认头部,http header done 确认所有HTTP头部接收完毕处理请求的模块rewrite phase: 2了解经过了 哪些http阶段 , http scriptcopy:”找到脚本变量值, http filename找到静态文件, uwsgi param找到上游头部找到处理它的locationtest location: “static“看 看哪些server和location尝试 处 理 请 求 ,using configuration ”/”最后又 是哪个location处理了请求发送HTTP响应HTTP/1.1 200 OK找到响应确认头部, http gzip filter 确认过滤模块的处理, write new buf 确认发送了多少字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论