apache 改 nginx 学习总结
Apache与Nginx的优缺点比较
1、nginx优点:效率高
反向代理,负载均衡
轻量级,同样起web服务,比apache占用更少的内存及资源
nginx只适合静态和反向。
Nginx选择了epollandkqueue作为开发模型.
最高能支持50,000个并发连接数
apache的优点:稳定
适合做动态请求
rewrite,比nginx的rewrite强大
最高支持5000最有最大并发连接数
抗并发,nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,在进程的切换等方面开销很大;nginx是异步的,多个连接(万级别)可以对应一个进程
Apache配置文件:
JkMount:
JKMountdwrservicesloadbalancer//所有以services结尾的请求转发给loadbalancer
JKMount/*/services/*loadbalancer//所有包含services的请求转发给loadbalancer
Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
sub_filter一行代码前面是需要替换的内容,后面单引号内是替换成的内容。可以用在http,server,location模块中。主要作用就是查找替换文件字符。
Nginx配置文件
location
基本语法:location[=|~|~*|^~]/uri/{…}
=严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~为区分大小写匹配(可用正则表达式)
~*为不区分大小写匹配(可用正则表达式)
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
^~如果把这个前缀用于一个常规字符串,那么告诉nginx如果路径匹配那么不测试正则表达式。
Location语法语法:location[=|~|~*|^~]/uri/{…}
注:
1、~为区分大小写匹配
2、~*为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
Root:
location/i/{
root/spool/w3;
}
请求"/i/top.gif"将会返回"/spool/w3/i/top.gif".
Ssi:
一个静态化的页面中,需要嵌入一小块实时变化的内容
Ajp:
这是一个Nginx的模块,用来使用Ajp协议连接后端的Tomcat.
location^~/bd/{
ssion;
ajp_keep_connon;
ajp_passajp://192.20.34.122:8001;
}
Alias和root的区别:
location/img/{
alias/var/www/image/;
}
#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
location/img/{
root/var/www/image;
}
#若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件
proxy_pass反向代理设置
用法location/{
proxy_passhttp://192.20.34.144:8099;
}
负载均衡策略
Nginx提供轮询(roundrobin)、用户IP哈希(clientIP)和指定权重3种方式。
默认情况是轮询。
ip_hash来指定IP哈希
upstreambackend{
ip_hash;
serverbackend1.example.com;
serverbackend2.example.com;
server.backend3.example.com;
}
weight来指定权重
upstreambackend{
serverbackend1.example.com;
serverIPweight=4;
}
serverIPdown;(down表示单前的server暂时不参与负载)
serverIPweight=2;(weight默认为1.weight越大,负载的权重就越大)
serverIPbackup;(其它所有的非backup机器down或者忙的时候,请求backup机器)
nignx限制了post请求大小限制:默认的最大请求body大小为8m,修改设置client_max_body_size=100m;