96SEO 2026-02-19 22:35 26
nginx是一个高性能的HTTP和反向代理服务器。

是由塞索耶夫为俄罗斯访问量第二的Rambler.ur站点开发的nginx是Apache服务不错的替代品。
nginx能够支撑5万并发连接实际生产环境中可以支撑2~4万并发连接数。
原因是nginx使用了最新的epoll和kqueue网络I/O模型而Apache使用的是传统的Select模型所以消耗的CPU等服务器资源要比nginx高得多。
能够实现高性能低消耗得原因是nginx采用异步非阻塞的方式处理请求nginx支持epoll等流行事件处理机制nginx采用独立于系统的事件处理机制能够高效处理请求。
购买F5BIG-IP,NetScaler等硬件负载均衡交换机需要10多万到几十万人名币而nginx为开源软件采用的是2-clause
如果NginxProxy后端的某台Web服务器宕机了不会影响到前端的访问。
这个时候nginx自带的ngx_http_proxy_module和ngx_http_upstream_module就会发挥作用。
相对于比较精细的是淘宝技术团队开发的nginx_upstream_check_module模块。
能够根据域名URL的不同将http请求分到不同的后端服务器群组。
nginx热部署功能在不影响用户体验下可以全天的进行不间断的运行即使运行数个月也不需要重新启动能够在不间断服务的情况下进行软件版本更新升级也就是不主动的杀死worker,就能够更换软件的二进制命令。
FastCGI:快速通用网关接口实际上是增加了一些功能的CGI是CGI的改进。
nginx的FastCGI很好而apache的一般nginx支持热部署而apache不支持但是nginx的安全性相对于apache比较低nginx比apache静态文件处理好nginx比apache的内存消耗小很多
nginx是以多进程的方式来工作的。
nginx在启动后会有一个master进程和多个worker进程。
接收来自外界的信号向各worker进程发送信号。
监控worker进程的运行状态当worker进程退出后会自动重新启动新的worker进程。
master(master进程会先建立好需要的listen的socket)------fork生成子进程workers继承socket(此时worker子进程们都继承了父进程master的所有属性每个进程的这个socket会监控在同一个ip地址与端口)当一个连接进入产生惊群现象。
当一个连接进来后所有在accept在这个socket上面的进程都会收到通知而只有一个进程可以accept这个连接。
其它的则accept失败。
当一个worker进程在accept这个连接之后就开始读取请求解析请求处理请求产生数据后再返回给客户端最后才断开连接一个完整的请求。
一个请求完全由worker进程来处理而且只在一个worker进程中处理。
master负责将请求分配给手下的workerworker接到分配的请求来做具体的事情。
所有的worker并不是轮询来处理master的请求而是采用“争抢”机制。
惊群现象指一个fd的事件被触发后等待这个fd的所有进程线程都被唤醒但是只有一个会去响应。
Nginx提供了一个accept_mutex这个对象这是一个加在accept上的一把共享锁。
有了这把锁之后就只会有一个进程在accept连接这样就不会有惊群问题了。
基于异步非阻塞的事件驱动模型可以说是Nginx得以获得高并发高性能的关键因素。
这一点上和Netty类似底层都是使用BSD
Netty是一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。
Kqueue是在UNIX上比较高效IO复用技术。
Epoll是为了处理大批量句柄而作了改进的poll。
进程之间不共享资源不需要加锁减少了使用锁对性能造成的影响。
同时降低编程的复杂性降低开发成本。
采用独立的进程可以让进程互相之间不会影响如果一个进程发生异常退出时其它进程正常工作master进程则很快启动新的worker进程确保服务不中断。
为了避免出现内存碎片减少向操作系统申请内存的次数降低各个模块的开发复杂度Nginx设计了简单的内存池它的作用主要是把多次向系统申请内存的操作整合成一次这大大减少了CPU资源的消耗同时减少了内存碎片。
http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz解压安装包
http://nginx.org/download/nginx-1.16.1.tar.gz
--prefix/usr/local/webserver/nginx
--with-pcre/usr/local/src/pcre-8.35
/usr/local/webserver/nginx/sbin/nginx
由于nginx优越性能及强大功能被业界大量使用nginx版本升级必然是越来越快的以优化自身性能或修复安全漏洞。
同时线上业务又不能停此时nginx的平滑升级就尤为重要具体步骤如下
先对原来安装nginx的版本以及编译的参数进行查看下载要升级的nginx版本解压nginx下载的压缩包编译make,切记不要make
install对原来老的nginx文件进行备份最后使用make
至此平滑升级成功以下是个人nginx从1.6版本升级到1.16.1版本成功的界面
server是一切的开始代表一个代理的出现里边两大配置项listen监听接口和server_name监听的地址里边还包括了location和其它配置项当存在server的时候nginx获取到的请求都会去匹配这些server(匹配其中的listen和server_name)。
server_name:用来配置监听的地址listen:用来配置监听的端口号
location是nginx的精华nginx就是通过拦截到的请求去对配置好的location块进行请求代理的。
aliasroot将请求代理到本地的指令也就是如果可以把请求发送到你的
硬盘里去获取资源这个指令可以代理前端的静态资源proxy_pass:对请求进行转发重定向的rewrite:用来重写请求路径
/usr/local/webserver/nginx/sbin/nginx
/usr/local/webserver/nginx/conf/nginx.conf
解释是请求彻底终止某项执行操作它期望接收进程清除自给的状态并退出
解释拥有命令行或者输入模式的那些程序应该停止它们在做的事情清除状态并等待用户的再次输入
虚拟主机使用的是特殊的软硬件技术它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机每台虚拟主机都可以是一个独立的网站可以具有独立的域名和完整的internet服务器功能同一台主机上的虚拟主机之间是完全独立的。
Nginx的主配置文件是:nginx.conf,nginx.conf主要组成如下
#如1个word能同时允许多少连接一个子进程最大允许连接1024个连接
/usr/local/webserver/nginx/yun/index.html
/usr/local/webserver/nginx/ip/index.html
重新读取配置文件然后网页进行访问http://192.168.1.129
代理模式的定义给某个对象提供一个代理对象并由代理对象控制原对象的引用。
简单的说就是我们想做什么但又不想直接去做那么这个时候就找另外一个人帮我们去做如同中介公司给我们做代理服务我们委托中介公司帮我们看房子。
反向代理和正向代理的区别就是正向代理代理客户端反向代理代理服务器。
反向代理其实客户端对代理是无感知的因为客户端不需要任何配置就可以访问我们只需要将请求发送到反向代理服务器由反向代理服务器去选择目标服务器获取数据后在返回给客户端此时反向代理服务器和目标服务器对外就是一个服务器暴露的是代理服务器地址隐藏了真实服务器IP地址。
理解这两种代理的关键在于代理服务器所代理的对象是什么正向代理代理的是客户端我们需要在客户端进行一些代理的设置。
而反向代理代理的是服务器作为客户端的我们是无法感知到服务器的真实存在的。
由于目标主机返回的数据会存放在代理服务器的硬盘中因此下一次访问时会直接读取起到缓存作用。
由于客户机请求必须通过代理服务器访问远程站点因此可在代理服务器上设限过滤某些不安全信息。
实现用nginx反向代理http://www.kkk.com直接跳转到192.168.1.129:8083
浏览器地址栏输入192.168.1.129:8083,就可以出现tomcat首页的界面这里我用curl测试:
将http://www.kkk.com映射到192.168.1.129
注意修改host文件的时候应该先将host文件拉到桌面进行修改然后修改完成后再拖进etc文件夹不然可能会无法生效。
配置完成后就可以通过www.kkk.com:8083,访问到初始界面
如上配置我们进行80端口的监听访问域名为http://www.kkk.com不加端口号时默认为80端口故访问该域名时会跳转到192.168.1.129:8083路径上,测试如下:
分摊到多个操作单元上进行执行。
我们就要一个调度者保证所有后端服务器都能将性能充分发挥从而保持服务器的整体性能最优这就是负载均衡。
根据权重来分发请求到不同的机器中指定轮询几率weight和访问比率成正比,用于后端服务器性能不均的情况。
根据请求者ip的hash值将请求发送到后台服务器中保证来自同一ip的请求被打到固定的机器上可以解决session问题。
根据请求的url的hash值将请求分到不同的机器中当后台服务器为缓存的时候效率高。
hash_method是使用的hash算法,crc32是一种校验数值的算法
浏览器地址栏输入地址http://192.168.1.129/edu/a.html负载均衡效果平均8081和8082端口中。
准备两台tomcat服务器一台8081一台8082在8081文件夹下和8082文件夹下都创建一个edu文件夹且创建a.html然后对这两个进行测试
对网络稳定性的依赖非常小安装和配置比较简单可以通过端口检测到服务器内部的故障不仅是优秀的负载均衡器/反向代理软件同时也是强大的web应用服务器
适应范围小仅能支持http,https,email协议对后端服务器的检查只支持通过端口检测不支持url检测不支持Session的直接保持但可以通过ip_hash来解决
正向代理是一个位于客户端和原始服务器之间的服务器为了从原始服务器取得内容客户端向代理发送一个请求并指定目标然后代理向原始服务器转交请求并将获得的内容返回给客户端。
客户端必须要进行一些特别的设置才能使用正向代理。
之所以要设置为默认的虚拟主机是因为这样就不用设置server_name了任何域名解析过来都可以正常访问如curl
正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。
反向代理的典型用途是将防火墙后面的服务器提供给internet用户访问。
从安全性上讲
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身所有必须采取安全措施以确保仅为经过授权的客户端提供服务。
正则表达式使用单个字符串来描述匹配一系列符合某个句法规则的字符串。
在很多文本编辑器里正则表达式通常被用来检索替换那些符合某个模式的文本。
竖直分隔符表示选择例如”boy|girl”可以匹配”boy”或者”girl”
这些都是数量限定符如果在一个模式中不加数量限定符则表示出现一次且仅出现一次
()圆括号可以用来定义模式字符串的范围和优先级如“gr(a|e)y”等价于”gray|grey”
应用context:server域/location域/if判断里
#把所有的请求都跳转至maintain.html页面,break是一个标识符
last:停止rewrite检测[如果没有匹配到会继续向下匹配]
break:停止rewrite检测[如果没有匹配到,则不再向下匹配直接返回404]
redirect:返回302临时重定向地址栏会显示跳转后的地址
permanent:返回301永久重定向,地址栏会显示跳转后的地址
计算指定的condition的值如果为真执行定义在大括号中的指令并将if指令中的配置指定给请求。
将http://zyk.net跳转至http://www.zyk.net
#$1表示引用第一个括号的内容是用户输入的内容访问/zyk/test01/跳转至/newindex.html,浏览器地址不变
}目录对换/xxx/123456~~~~~/xxx?id123456
last;禁止访问以.sh|.flv|.mps为文件后缀的文件
通过访问日志可以得到用户地域来源跳转来源使用终端某个URL访问量等相关信息。
/usr/local/webserver/nginx/conf/nginx.conf
日志生成到nginx根目录logs/access.log的文件默认使用”main”日志格式也可以自定义格式
$body_bytes_sent:给客户端发送的文件主体内容字节数
$http_referer:可以记录用户是从哪个链接访问过来的
$http_x_forwarded_for:可以记录客户端IP
/usr/local/webserver/nginx/logs/access.log
nginx的日志文件没有rotate功能。
可以通过写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件不用担心重命名后nginx找不到日志文件而丢失日志。
在你未重新打开原名字的日志文件前nginx还是会向你重命名的文件写日志linux是靠文件描述符而不是文件名定位文件。
/usr/local/webserver/nginx/nginx_log.sh
LOG_HOME”/usr/local/webserver/nginx/logs/”
${LOG_HOME}/${LOG_PATH_BAK}.log
/usr/local/webserver/nginx/logs/nginx.pid’
/usr/local/webserver/nginx/nginx_log.sh
/usr/local/webserver/nginx/conf/nginx.conf
原因客户端在未等到服务器相应返回前就关闭了客户端描述符。
一般出现在客户端设置超时后主动关闭socket。
解决方法根据实际nginx后端服务器的处理时间修改客户端超时时间。
解决方法:修改client_max_body_size大小,位置可以是http/server/location。
错误网站上线后添加了https证书浏览器访问正常通过curl请求请求被reset。
先通过curl请求同域名下http的url和同服务器下的https域名验证80和443端口是否正常。
尝试加入兼容性更高的加密套件。
用tcpdump两边抓包然后用wireshark分析看是否是因为nginx的buffer不够用。
加入ssl_session_cache参数进行builtin和shared中选择一种适合的。
注意ssl_session_cache参数会影响到curl的请求。
请求uri出现的异常是由于upstream还未返回应答给用户时用户断开连接造成的对系统无影响可以忽略。
服务器的并发连接数超过了其承载量服务器会将其中一些连接Down掉客户关掉了浏览器而浏览器还在给客户端发送数据浏览器端按了stop
用于设置允许接受的客户端请求内容的最大值默认值是1M,client发送的body超过了设置值。
nginx.conf由多个块组成最外面的块是mainmain包含Events和HTTPHTTP包含upstream和多个ServerServer又包含多个location
server继承mainlocation继承serverupstream既不会继承其他设置也不会被继承。
cpu的亲和性进程要在某个给定的cpu上尽量长时间的运行而不被迁移到其他处理器的倾向性进程迁移的频率小就意味着产生的负载小。
在多核运行的机器上每个cpu本身自己会有缓存在缓存中存着进程使用的数据而没有绑定cpu的话进程可能会被操作系统调度到其他cpu上如此cpu
cache命中率就低了也就是说调到的cpu缓冲区没有这类数据要先把内存或硬盘的数据载入缓存。
而当缓存区绑定cpu后程序就会一直在指定的cpu执行不会被操作系统调度到其他cpu,性能上会有一定的提高。
另外一种使用cpu绑定考虑的是将关键的进程隔离开对于部分实时进程调度优先级提高可以将其绑定到一个指定的cpu核上可以保证实时进程的调度也可以避免其他cpu上进程被该实时进程干扰。
我们可以手动地为其分配cpu核而不会过多的占用同一个cpu所以设置cpu亲和性可以使某些程序提高性能。
操作系统部分linux的调度程序同时提供“软CPU亲和性”和“硬CPU亲和性”。
软亲和性进程要在指定的cpu上尽量长时间地运行而不被迁移到其他cpu。
linux内核进程调度器天生就具有被称为软CPU亲和性地特性。
因此Linux通过这种软的亲和性试图使某进程尽可能在同一个CPU上运行。
虽然linux尽力通过一种软的亲和性试图使进程尽量在同一个处理器上运行但它也允许用户强制指定进程无论如何都必须在指定地处理器上运行。
在Linux内核中所有的进程都有一个相关的数据结构称为task_struct。
这个结构非常重要其中与亲和性相关度最高地是cpus_allowed位掩码。
这个位掩码由n位组成与系统中的n个逻辑处理器对应。
具有4个物理cpu的系统可以有4位。
如果这些CPU都启用了超线程那么这个系统就有8个位掩码。
如果为给定的进程设置了给定的位那么这个进程就可以在相关CPU上运行。
用来控制进程可以在哪个处理器上运行sched_setaffinity
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback