当前位置: 首页 > news >正文

中国是唯一一个拥有空间站软文营销的五个步骤

中国是唯一一个拥有空间站,软文营销的五个步骤,自己建服务器做网站违法,深圳网络营销外包好吗目录 Nginx的优点 Nginx简介 Nginx的优点 可以高并发连接 内存消耗少 成本低廉 配置文件非常易懂 稳定性高 内置有健康的检查功能 支持Rewrite重写 支持热部署 Nginx与Apache的对比 Nginx多进程工作原理跟设计 Nginx是如何实现高性能的 事件驱动模型 多进程机制…目录 Nginx的优点 Nginx简介 Nginx的优点 可以高并发连接 内存消耗少 成本低廉 配置文件非常易懂 稳定性高 内置有健康的检查功能 支持Rewrite重写 支持热部署 Nginx与Apache的对比 Nginx多进程工作原理跟设计 Nginx是如何实现高性能的 事件驱动模型 多进程机制 内存池 Nginx的安装配置 Nginx的安装 安装编译工具及库文件 先安装PCRE 安装Nginx Nginx的平滑升级 Nginx主要配置介绍及注意事项 注释 server location set与if Nginx的启动停止及信号控制 Nginx虚拟主机配置 管理虚拟主机 Nginx基本配置 基于域名的虚拟主机 基于端口的虚拟主机 基于IP地址虚拟主机 Nginx的反向代理 代理 反向代理 为什么要使用代理服务器 提高访问速度 防火墙作用 翻墙 Nginx反向代理的配置 启动一个tomcat 通过修改本地host文件 配置nginx.conf Nginx反向代理相关指令介绍 Nginx的负载均衡 负载均衡的作用 负载均衡的五种算法 round robin weight IP_hash url_hash(第三方) fair(第三方) Nginx负载均衡配置 实现效果 准备工作 在nginx.conf中对负载均衡进行配置 最终测试 用Nginx做负载均衡的优缺点 Nginx的正向代理 正向代理 正向代理的配置 正向代理和反向代理的区别 Nginx的rewrite规则 正则表达式 什么是正则表达式 正则表达式的基本语法 rewrite规则的作用及应用场景 作用 场景 rewrite配置语法 配置语法 FLAG rewrite在location中的配置 if语句 配合相关实例理解 Nginx的日志 Nginx的日志描述 Nginx的日志格式 Nginx的日志分隔 Nginx的常见问题及解决方案 pid目录不存在的问题 目录不存在 无效的pid 防火墙及端口问题 状态码报错问题 错误404 Bad Request 错误502 Bad Gateway 错误499 Client Closed Request 错误504 Gateway Timeout 错误413 Request Entity Too Large Nginx常见异常 curl请求 upstream prematurely closed connection错误 recv() failed (104:Connection reset by peer)错误 client intented to send too large body错误 reopening logs异常 Nginx配置文件核心配置讲解 Nginx的配置文件结构 四个内容块之间的关系 Nginx配置文件实例讲解 CPU亲和性 什么是CPU亲和性 linux操作系统的CPU亲和性特征 linux操作系统中修改CPU亲和性地手段 Nginx的优点 Nginx简介 nginx是一个高性能的HTTP和反向代理服务器。是由塞索耶夫为俄罗斯访问量第二的Rambler.ur站点开发的nginx是Apache服务不错的替代品。 Nginx的优点 可以高并发连接 nginx能够支撑5万并发连接实际生产环境中可以支撑2~4万并发连接数。 原因是nginx使用了最新的epoll和kqueue网络I/O模型而Apache使用的是传统的Select模型所以消耗的CPU等服务器资源要比nginx高得多。 内存消耗少 能够实现高性能低消耗得原因是nginx采用异步非阻塞的方式处理请求nginx支持epoll等流行事件处理机制nginx采用独立于系统的事件处理机制能够高效处理请求。 成本低廉 购买F5BIG-IP,NetScaler等硬件负载均衡交换机需要10多万到几十万人名币而nginx为开源软件采用的是2-clause BSD-like协议可以免费使用并且可用于商业用途。 配置文件非常易懂 和普通的程序一样通俗易懂即使不是专业的系统管理员也能看懂。 稳定性高 用于反向代理宕机的概率特别小。 内置有健康的检查功能 如果NginxProxy后端的某台Web服务器宕机了不会影响到前端的访问。这个时候nginx自带的ngx_http_proxy_module和ngx_http_upstream_module就会发挥作用。相对于比较精细的是淘宝技术团队开发的nginx_upstream_check_module模块。 支持Rewrite重写 能够根据域名URL的不同将http请求分到不同的后端服务器群组。 支持热部署 特点在不重启或者关闭进程的情况下新的应用直接替换旧的应用。 nginx热部署功能在不影响用户体验下可以全天的进行不间断的运行即使运行数个月也不需要重新启动能够在不间断服务的情况下进行软件版本更新升级也就是不主动的杀死worker,就能够更换软件的二进制命令。 Nginx与Apache的对比 小知识 CGI:通用网关接口就是web server和web应用程序交流时的规范是协议。 FastCGI:快速通用网关接口实际上是增加了一些功能的CGI是CGI的改进。 nginx的FastCGI很好而apache的一般nginx支持热部署而apache不支持但是nginx的安全性相对于apache比较低nginx比apache静态文件处理好nginx比apache的内存消耗小很多 Nginx多进程工作原理跟设计 nginx是以多进程的方式来工作的。nginx在启动后会有一个master进程和多个worker进程。 master进程主要用来管理worker进程 接收来自外界的信号向各worker进程发送信号。监控worker进程的运行状态当worker进程退出后会自动重新启动新的worker进程。 master处理过程如下 master(master进程会先建立好需要的listen的socket)------fork生成子进程workers继承socket(此时worker子进程们都继承了父进程master的所有属性每个进程的这个socket会监控在同一个ip地址与端口)当一个连接进入产生惊群现象。当一个连接进来后所有在accept在这个socket上面的进程都会收到通知而只有一个进程可以accept这个连接。其它的则accept失败。 worker进程工作 当一个worker进程在accept这个连接之后就开始读取请求解析请求处理请求产生数据后再返回给客户端最后才断开连接一个完整的请求。一个请求完全由worker进程来处理而且只在一个worker进程中处理。 master负责将请求分配给手下的workerworker接到分配的请求来做具体的事情。所有的worker并不是轮询来处理master的请求而是采用“争抢”机制。 惊群现象指一个fd的事件被触发后等待这个fd的所有进程线程都被唤醒但是只有一个会去响应。 Nginx对惊群现象的处理 Nginx提供了一个accept_mutex这个对象这是一个加在accept上的一把共享锁。有了这把锁之后就只会有一个进程在accept连接这样就不会有惊群问题了。 Nginx是如何实现高性能的 事件驱动模型 基于异步非阻塞的事件驱动模型可以说是Nginx得以获得高并发高性能的关键因素。这一点上和Netty类似底层都是使用BSD kqueueLinux epoll等。 注意 Netty是一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。Kqueue是在UNIX上比较高效IO复用技术。Epoll是为了处理大批量句柄而作了改进的poll。 多进程机制 使用多进程的好处有两点 进程之间不共享资源不需要加锁减少了使用锁对性能造成的影响。同时降低编程的复杂性降低开发成本。 采用独立的进程可以让进程互相之间不会影响如果一个进程发生异常退出时其它进程正常工作master进程则很快启动新的worker进程确保服务不中断。 内存池 为了避免出现内存碎片减少向操作系统申请内存的次数降低各个模块的开发复杂度Nginx设计了简单的内存池它的作用主要是把多次向系统申请内存的操作整合成一次这大大减少了CPU资源的消耗同时减少了内存碎片。 Nginx的安装配置 Nginx的安装 安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel 先安装PCRE 为了让nginx支持Rewrite功能需要对其进行安装。 下载PCRE安装包 cd /usr/local/src/ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz解压安装包 tar zxvf pcre-8.35.tar.gz进入安装包目录编译安装 cd pcre-8.35 ./configure make make install查看pcre版本 pcre-config –version 安装Nginx 下载 nginx 并解压压缩包 cd /usr/local/src/ wget http://nginx.org/download/nginx-1.16.1.tar.gz tar zxvf nginx-1.16.1.tar.gz进入安装包目录 cd nginx-1.16.1编译安装 ./configure --prefix/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre/usr/local/src/pcre-8.35 make make install查看nginx版本 /usr/local/webserver/nginx/sbin/nginx -v 到这里nginx安装完成。 Nginx的平滑升级 由于nginx优越性能及强大功能被业界大量使用nginx版本升级必然是越来越快的以优化自身性能或修复安全漏洞。同时线上业务又不能停此时nginx的平滑升级就尤为重要具体步骤如下 先对原来安装nginx的版本以及编译的参数进行查看下载要升级的nginx版本解压nginx下载的压缩包编译make,切记不要make install对原来老的nginx文件进行备份最后使用make upgrade替换老的nginx进程 至此平滑升级成功以下是个人nginx从1.6版本升级到1.16.1版本成功的界面 Nginx主要配置介绍及注意事项 注释 以#开头的一行为注释只有单行注释。 server server是一切的开始代表一个代理的出现里边两大配置项listen监听接口和server_name监听的地址里边还包括了location和其它配置项当存在server的时候nginx获取到的请求都会去匹配这些server(匹配其中的listen和server_name)。 server_name:用来配置监听的地址listen:用来配置监听的端口号 location location是nginx的精华nginx就是通过拦截到的请求去对配置好的location块进行请求代理的。 aliasroot将请求代理到本地的指令也就是如果可以把请求发送到你的 硬盘里去获取资源这个指令可以代理前端的静态资源proxy_pass:对请求进行转发重定向的rewrite:用来重写请求路径 set与if set用来设置变量的if是用来做判断的。 Nginx的启动停止及信号控制 启动 /usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf 从容停止 kill -QUIT nginx 快速停止 kill -TERM nginx主进程号; 解释是请求彻底终止某项执行操作它期望接收进程清除自给的状态并退出 kill -INT nginx主进程号 解释拥有命令行或者输入模式的那些程序应该停止它们在做的事情清除状态并等待用户的再次输入 强制停止所有nginx进程 pkill -9 nginx 平滑重启: kill -HUP nginx主进程号 信号控制 TERM,INT快速关闭QUIT从容关闭 HUP平滑重启USR1重新打开日志文件在切割日志时用途较大 USR2平滑升级可执行程序WHICH从容关闭工作进程 Nginx虚拟主机配置 管理虚拟主机 虚拟主机使用的是特殊的软硬件技术它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机每台虚拟主机都可以是一个独立的网站可以具有独立的域名和完整的internet服务器功能同一台主机上的虚拟主机之间是完全独立的。 Nginx基本配置 Nginx的主配置文件是:nginx.conf,nginx.conf主要组成如下 #全局区 有一个工作子进程一般设置为cpu数*核数 worker_processes 1; events{ #一般是配置nginx进程与连接的特性 #如1个word能同时允许多少连接一个子进程最大允许连接1024个连接 worker_connections 1024; } #配置HTTP服务器配置段 http{ #配置虚拟主机段 server{ #定位把特殊的路径或文件再次定位 location{… } } server{… } } 基于域名的虚拟主机 在http大括号中添加如下代码块: 切换安装目录:cd /usr/local/webserver/nginx 创建目录:mkdir yun 新建index.html文件:vi /usr/local/webserver/nginx/yun/index.html 在windows的 本机中对host进行配置: 添加192.168.1.129 http://www.yun.com 然后访问:http://www.yun.com 基于端口的虚拟主机 对nginx.conf进行配置 新建index.html文件内容 重新读取配置文件后进行访问: 基于IP地址虚拟主机 配置nginx.conf文件: 新建index.html文件 执行命令 mkdir /usr/local/webserver/nginx/ip vi /usr/local/webserver/nginx/ip/index.html 重新读取配置文件然后网页进行访问http://192.168.1.129 Nginx的反向代理 代理 代理模式的定义给某个对象提供一个代理对象并由代理对象控制原对象的引用。 简单的说就是我们想做什么但又不想直接去做那么这个时候就找另外一个人帮我们去做如同中介公司给我们做代理服务我们委托中介公司帮我们看房子。 Nginx代理的协议中用得最多的就是Http代理服务器。 反向代理 反向代理和正向代理的区别就是正向代理代理客户端反向代理代理服务器。 反向代理其实客户端对代理是无感知的因为客户端不需要任何配置就可以访问我们只需要将请求发送到反向代理服务器由反向代理服务器去选择目标服务器获取数据后在返回给客户端此时反向代理服务器和目标服务器对外就是一个服务器暴露的是代理服务器地址隐藏了真实服务器IP地址。 理解这两种代理的关键在于代理服务器所代理的对象是什么正向代理代理的是客户端我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器作为客户端的我们是无法感知到服务器的真实存在的。 为什么要使用代理服务器 提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中因此下一次访问时会直接读取起到缓存作用。 防火墙作用 由于客户机请求必须通过代理服务器访问远程站点因此可在代理服务器上设限过滤某些不安全信息。 翻墙 翻墙浏览器就是利用了代理服务器不用出国也能直接访问外网。 Nginx反向代理的配置 实现用nginx反向代理http://www.kkk.com直接跳转到192.168.1.129:8083 启动一个tomcat 浏览器地址栏输入192.168.1.129:8083,就可以出现tomcat首页的界面这里我用curl测试: 通过修改本地host文件 将http://www.kkk.com映射到192.168.1.129 注意修改host文件的时候应该先将host文件拉到桌面进行修改然后修改完成后再拖进etc文件夹不然可能会无法生效。 配置完成后就可以通过www.kkk.com:8083,访问到初始界面 配置nginx.conf 在nginx.conf中进行配置: 如上配置我们进行80端口的监听访问域名为http://www.kkk.com不加端口号时默认为80端口故访问该域名时会跳转到192.168.1.129:8083路径上,测试如下: Nginx反向代理相关指令介绍 listen:该指令用于配置网络监听 server_name:该指令用于虚拟主机的配置通常分为两种 基于域名的虚拟主机配置:servername name …; 基于IP地址的虚拟主机的配置:server_name 192.168.1.129; location:用于匹配URL proxy_pass:用于设置被代理服务器的地址 index:用于设置网页的默认首页 Nginx的负载均衡 负载均衡的作用 分摊到多个操作单元上进行执行。我们就要一个调度者保证所有后端服务器都能将性能充分发挥从而保持服务器的整体性能最优这就是负载均衡。 负载均衡的五种算法 round robin 轮询依次将请求分配到各个后台服务器中默认的负载均衡方式 使用于后台机器性能一致的情况 挂掉的机器可以自动从服务列表中剔除 weight 根据权重来分发请求到不同的机器中指定轮询几率weight和访问比率成正比,用于后端服务器性能不均的情况。 例如 upstream zyk{ server 192.168.1.129:8081 weight10; server 192.168.1.129:8082 weight10; } IP_hash 根据请求者ip的hash值将请求发送到后台服务器中保证来自同一ip的请求被打到固定的机器上可以解决session问题。 例如 upstream zyk{ ip_hash; server 192.168.1.14:88; server 192.168.1.15:80; } url_hash(第三方) 根据请求的url的hash值将请求分到不同的机器中当后台服务器为缓存的时候效率高。 例如 upstream zyk{ server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; } hash_method是使用的hash算法,crc32是一种校验数值的算法 fair(第三方) 根据后台相应时间来分发请求响应时间短的分发的请求多 upstream zyk{ server server1; server server2; fair; } Nginx负载均衡配置 实现效果 浏览器地址栏输入地址http://192.168.1.129/edu/a.html负载均衡效果平均8081和8082端口中。 准备工作 准备两台tomcat服务器一台8081一台8082在8081文件夹下和8082文件夹下都创建一个edu文件夹且创建a.html然后对这两个进行测试 在nginx.conf中对负载均衡进行配置 在nginx.conf中的配置 最终测试 测试url: 用Nginx做负载均衡的优缺点 优点 对网络稳定性的依赖非常小安装和配置比较简单可以通过端口检测到服务器内部的故障不仅是优秀的负载均衡器/反向代理软件同时也是强大的web应用服务器 缺点 适应范围小仅能支持http,https,email协议对后端服务器的检查只支持通过端口检测不支持url检测不支持Session的直接保持但可以通过ip_hash来解决 Nginx的正向代理 正向代理 正向代理是一个位于客户端和原始服务器之间的服务器为了从原始服务器取得内容客户端向代理发送一个请求并指定目标然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 正向代理的配置 对nginx.conf进行配置 之所以要设置为默认的虚拟主机是因为这样就不用设置server_name了任何域名解析过来都可以正常访问如curl -x127.0.0.1:80 http://baidu.com 既可以访问到百度。 正向代理和反向代理的区别 两者区别 从用途上讲 正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。 反向代理的典型用途是将防火墙后面的服务器提供给internet用户访问。从安全性上讲 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身所有必须采取安全措施以确保仅为经过授权的客户端提供服务。 反向代理对外都是透明的访问者并不知道自己访问的是一个代理。 Nginx的rewrite规则 正则表达式 什么是正则表达式 正则表达式使用单个字符串来描述匹配一系列符合某个句法规则的字符串。在很多文本编辑器里正则表达式通常被用来检索替换那些符合某个模式的文本。 正则表达式的基本语法 一个正则表达式通常被称为一个模式。 选择 | 竖直分隔符表示选择例如”boy|girl”可以匹配”boy”或者”girl” 数量限定 *,,? 这些都是数量限定符如果在一个模式中不加数量限定符则表示出现一次且仅出现一次 表示前面的字符必须出现至少一次 ? 表示前面的字符最多出现一次 * 表示前面的字符可以不出现也可以出现一次或者多次 范围和优先级 ()圆括号可以用来定义模式字符串的范围和优先级如“gr(a|e)y”等价于”gray|grey” 语法 \ 将下一个字符标记为一个特殊字符或一个原义字符 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 匹配前面的子表达式零次或多次 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式零次或一次 | 选择 [xyz] 匹配所包含的任意一个字符 [^xyz] 匹配未列出的任意字符 [a-z] 匹配指定范围内的任意字符 [^a-z] 匹配任何不在指定范围内的任意字符 rewrite规则的作用及应用场景 作用 作用实现对URL的重写以及对url的重定向。 场景 URL访问跳转支持开发设计 a.页面跳转 b.兼容性支持 c.展示效果SEO优化 SEO:搜索引擎优化维护 a.后台维护 b.流量转发安全 伪静态页面 rewrite配置语法 配置语法 指令语法:rewrite [正则表达式 替换前的URL][替换后的URL][标识flag]; 默认值default:无配置 应用context:server域/location域/if判断里 配置实例:rewrite ^(.*)$ /pages/maintain.html break; #把所有的请求都跳转至maintain.html页面,break是一个标识符 FLAG flag是一个标识符,标识rewrite的类型 last:停止rewrite检测[如果没有匹配到会继续向下匹配] break:停止rewrite检测[如果没有匹配到,则不再向下匹配直接返回404] redirect:返回302临时重定向地址栏会显示跳转后的地址 permanent:返回301永久重定向,地址栏会显示跳转后的地址 rewrite在location中的配置 if语句 首先申明nginx只有if语句做判断语句没有else语句。 If语句的常用形式如下 if(condition){ …; } 计算指定的condition的值如果为真执行定义在大括号中的指令并将if指令中的配置指定给请求。 配合相关实例理解 将http://zyk.net跳转至http://www.zyk.net if($host’http://zyk.net’) { rewrite ^/(.*)$ http://www.zyk.net/$1 permanent; } #$host内置nginx变量,匹配用户访问的域名 #$1表示引用第一个括号的内容是用户输入的内容访问/zyk/test01/跳转至/newindex.html,浏览器地址不变 rewrite ^/zyk/test01/$ /newindex.html last;多域名跳转http://www.zyk.net If($host!’http://www.zyk.net’) { rewrite ^/(.*)$ http://www.zyk.net/$1 permanent; }目录对换/xxx/123456~~~~~/xxx?id123456 \d代表匹配数字,相当于[0-9] rewrite ^/(.)/(\d) /$1?id$2 last;禁止访问以.sh|.flv|.mps为文件后缀的文件 location ~.*\.(sh|flv|mp3)$ { return 403; } Nginx的日志 Nginx的日志描述 通过访问日志可以得到用户地域来源跳转来源使用终端某个URL访问量等相关信息。 通过错误日志可以得到系统某个服务或server的性能瓶颈。 Nginx的日志格式 打开nginx.conf配置文件vim /usr/local/webserver/nginx/conf/nginx.conf 日志生成到nginx根目录logs/access.log的文件默认使用”main”日志格式也可以自定义格式 log_format指令用来设置日志的格式 access_log指令用来设置日志的路径 默认”mian”日志格式: log_format main ‘$remote_addr - $remote_user [$time_local] “request” ‘ ‘$status $body_bytes_sent ”$http_referer” ‘ ‘”$http_user_agent” “$http_x_forwarded_for” ‘; acess_log logs/access.log main; 参数解释 $remote_addr:代理服务器的ip地址 $remote_user:用于记录远程客户端的用户名称 $time_local:用于记录访问时间和时区 $request:用于记录请求的url以及请求方法 $status:响应状态码 $body_bytes_sent:给客户端发送的文件主体内容字节数 $http_referer:可以记录用户是从哪个链接访问过来的 $http_user_agent:用户所使用的代理 $http_x_forwarded_for:可以记录客户端IP 查看日志的命令:tail -f /usr/local/webserver/nginx/logs/access.log Nginx的日志分隔 nginx的日志文件没有rotate功能。可以通过写一个nginx日志切割脚本来自动切割日志文件。 第一步就是重命名日志文件不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前nginx还是会向你重命名的文件写日志linux是靠文件描述符而不是文件名定位文件。 第二步向nginx主进程发送USR1信号。 Nginx日志按每5分钟自动切割脚本如下 新建shell脚本vi /usr/local/webserver/nginx/nginx_log.sh #!/bin/bash #设置日志文件存放目录 LOG_HOME”/usr/local/webserver/nginx/logs/” #备份文件名称 LOG_PATH_BAK”$(date -d yesterday %Y%m%d%H%M)”.abc.access.log #重命名日志文件 mv${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log #向nginx主进程发信号重新打开日志 kill -USR1 ‘cat /usr/local/webserver/nginx/logs/nginx.pid’ 创建crontab设置作业 #设置日志文件存放目录crontab -e */5 * * * * sh /usr/local/webserver/nginx/nginx_log.sh #在终端输入service crond stop可以停止crontab定时任务执行 Nginx的常见问题及解决方案 pid目录不存在的问题 目录不存在 第一种方法重新创建 第二种方法修改配置文件放开pid注释后新建logs目录即可 #pid logs/nginx.pid; 无效的pid 如果出现invalid无效pid的报错信息可以通过nginx -c 指定配置文件 ./nginx -c /usr/local/webserver/nginx/conf/nginx.conf 防火墙及端口问题 检查防火墙是否启动firewall-cmd –state 开启防火墙systemctl start firewalld 关闭防火墙systemctl stop firewalld 重启防火墙firewall-cmd –reload 开启端口号firewall-cmd --zonepublic --add-port端口号/tcp --permanent 检查端口号是否生效firewall-cmd --zonepublic --query-port端口号/tcp lsof -i:端口号 查看端口号的进程情况 kill -9 进程号 强制杀死进程 状态码报错问题 错误404 Bad Request 原因请求的Header过大。 解决方法配置nginx_conf文件。 client_header_buffer_size 16k; large_client_header_buffers 4 64k; 错误502 Bad Gateway 原因后端服务器无法处理业务中断。 解决方法从后端日志获取错误原因解决后端服务器问题。 proxy_next_upstream error timeout invalid_header http_500 http_503; 或者尝试设置 large_client_header_buffers 4 32k; 错误499 Client Closed Request 原因客户端在未等到服务器相应返回前就关闭了客户端描述符。一般出现在客户端设置超时后主动关闭socket。 解决方法根据实际nginx后端服务器的处理时间修改客户端超时时间。 错误504 Gateway Timeout 原因后端服务器在超时时间内未响应Nginx代理请求。 解决方法根据后端服务器实际处理情况调正后端请求超时时间。 proxy_read_timeout 90; proxy_send_timeout 90; 错误413 Request Entity Too Large 原因nginx默认上传文件大小为1M。 解决方法:修改client_max_body_size大小,位置可以是http/server/location。 Nginx常见异常 curl请求 错误网站上线后添加了https证书浏览器访问正常通过curl请求请求被reset。 解决方案线路 先通过curl请求同域名下http的url和同服务器下的https域名验证80和443端口是否正常。尝试加入兼容性更高的加密套件。用tcpdump两边抓包然后用wireshark分析看是否是因为nginx的buffer不够用。加入ssl_session_cache参数进行builtin和shared中选择一种适合的。 注意ssl_session_cache参数会影响到curl的请求。 小知识tcpdump抓包可以分析包还是得用wireshark ECC证书要比RSA证书更小加解密更快推荐 upstream prematurely closed connection错误 请求uri出现的异常是由于upstream还未返回应答给用户时用户断开连接造成的对系统无影响可以忽略。 recv() failed (104:Connection reset by peer)错误 服务器的并发连接数超过了其承载量服务器会将其中一些连接Down掉客户关掉了浏览器而浏览器还在给客户端发送数据浏览器端按了stop client intented to send too large body错误 用于设置允许接受的客户端请求内容的最大值默认值是1M,client发送的body超过了设置值。 reopening logs异常 用户发送kill -USR1命令类似的”gracefully shutting down”是用户发送kill -WINCH命令。 Nginx配置文件核心配置讲解 Nginx的配置文件结构 nginx的配置文件nginx.conf位于其安装目录的conf目录下 nginx.conf由多个块组成最外面的块是mainmain包含Events和HTTPHTTP包含upstream和多个ServerServer又包含多个location main块设置的指令将影响其他所有设置 server块设置的指令主要用于指定主机和端口 upstream指令主要用于负载均衡设置一系列的后端服务器 location块用于匹配网页的位置 四个内容块之间的关系 server继承mainlocation继承serverupstream既不会继承其他设置也不会被继承。 Nginx配置文件实例讲解 CPU亲和性 什么是CPU亲和性 cpu的亲和性进程要在某个给定的cpu上尽量长时间的运行而不被迁移到其他处理器的倾向性进程迁移的频率小就意味着产生的负载小。 在多核运行的机器上每个cpu本身自己会有缓存在缓存中存着进程使用的数据而没有绑定cpu的话进程可能会被操作系统调度到其他cpu上如此cpu cache命中率就低了也就是说调到的cpu缓冲区没有这类数据要先把内存或硬盘的数据载入缓存。而当缓存区绑定cpu后程序就会一直在指定的cpu执行不会被操作系统调度到其他cpu,性能上会有一定的提高。 另外一种使用cpu绑定考虑的是将关键的进程隔离开对于部分实时进程调度优先级提高可以将其绑定到一个指定的cpu核上可以保证实时进程的调度也可以避免其他cpu上进程被该实时进程干扰。 我们可以手动地为其分配cpu核而不会过多的占用同一个cpu所以设置cpu亲和性可以使某些程序提高性能。 linux操作系统的CPU亲和性特征 操作系统部分linux的调度程序同时提供“软CPU亲和性”和“硬CPU亲和性”。 软亲和性进程要在指定的cpu上尽量长时间地运行而不被迁移到其他cpu。 linux内核进程调度器天生就具有被称为软CPU亲和性地特性。因此Linux通过这种软的亲和性试图使某进程尽可能在同一个CPU上运行。 硬亲和性将进程或者线程绑定到某一个指定的cpu核运行。 虽然linux尽力通过一种软的亲和性试图使进程尽量在同一个处理器上运行但它也允许用户强制指定进程无论如何都必须在指定地处理器上运行。 linux操作系统中修改CPU亲和性地手段 在Linux内核中所有的进程都有一个相关的数据结构称为task_struct。这个结构非常重要其中与亲和性相关度最高地是cpus_allowed位掩码。这个位掩码由n位组成与系统中的n个逻辑处理器对应。具有4个物理cpu的系统可以有4位。如果这些CPU都启用了超线程那么这个系统就有8个位掩码。如果为给定的进程设置了给定的位那么这个进程就可以在相关CPU上运行。 sched_set_affinity() 用来修改位掩码sched_get_affinity() 用来查看当前的位掩码cpus_allowed 用来控制进程可以在哪个处理器上运行sched_setaffinity 用于某个进程绑定到一个特定cpu
http://www.tj-hxxt.cn/news/134933.html

相关文章:

  • 诸城做网站的qq小程序开发平台
  • 网站关键词排名seo室内设计师培训机构
  • 惠州网站建设推广公司广东省建设监理协会官方网站
  • 旅游产品推广方案移动端网站如何优化
  • 网站建设兼职招聘wordpress页脚小工具栏
  • 湘潭网站建设 要选磐石网络h5制作模板免费永久
  • discuz做服务网站建设旅游网站
  • 设计网站会员哪个好用python 网站开发 linux
  • 山西省建设厅网站打不开浏览器打不开wordpress
  • 怎样做下载网站改版网站会影响百度
  • 服务平台网站设计怎么做直播视频教学视频网站
  • 各大中文网站外观设计
  • 合肥商城网站开发嘉兴个人建站
  • 网站前端改版涉及到的问题wordpress企业官网主题
  • 网站建设中提示页面下载金华做网站报价
  • 张槎网站建设制作做视频点播网站如何赚钱
  • html怎么做查询网站青柠视频免费观看高清视频
  • 做网站用哪个编程语言重庆市建设工程信息网 安全监督
  • 喊别人做的网站不肯给代码抖音开放平台注册
  • 长沙企业建站在线咨询wordpress 链接本地化
  • 网站seo优化合同wordpress主题怎么编辑
  • 网站备案名称规定企业案例网站生成
  • 胶南做网站如何用php做电商网站
  • 个人网站备案名称举例网站如何生成静态
  • 网站设计计费怎样建设直播网站
  • 网站域名空间费用学网站开发要下载哪些软件
  • 桂林网站制作公司华彩wordpress设定密码
  • html教学网站discuz社区动力
  • ps如何做网站首页域名注册新网
  • 滕王阁环境建设网站电子商务网站安全措施