一: Nginx介绍:
Nginx 是⼀个⾼性能的HTTP和反向代理web服务器,核⼼特点是占有内存少,并发能⼒强。
Http服务器(Web服务器):
性能⾮常⾼,⾮常注重效率,能够经受⾼负载的考验。⽀持 50000 个并发连接数,不仅如此, CPU 和内存的占⽤也⾮常的低, 10000 个没有活动的连接才占⽤2.5M 的内存
反向代理:
客户端发送请求到反向代理服务器(⽐如 Nginx ),由反向代理服务器选择原始服务器获取结果响应,最终再返回给客户端浏览器。 客户端不知道目标地址是什么,所以叫反向代理。
负载均衡:
目标服务器有多台时,nginx可通过一定的规则,将请求转到某一台上面去。 这些规则有 随机,轮询,权重等。
动静分离:
将一些静态资源如css/js/html/jpg…等,放到nginx性能会更好。
二:配置文件:
全局块:
从配置⽂件开始到 events 块之间的内容,此处的配置影响 nginx 服务器整体的运⾏,⽐如 worker 进程的数量、错误⽇志的位置等
events块
nginx 服务器与⽤户的⽹络连接,⽐如 worker_connections 1024 ,标识 每个 workderprocess⽀持的最⼤连接数为 1024
http块
http 块是虚拟主机的配置,监听端⼝的配置,请求转发、反向代理、负载均衡等。
1、反向代理:
或者:
一个server代表一个虚拟主机,在下面可以配置多个location。
附录:location的使用:
location [=|~|~*|^~] /uri/ { … }
精确匹配: location = /abc { } 代表url中只能是/abc
前缀匹配: location ^~ /abc { } 以/abc开头的url
正则匹配: location ~* /abc { } 以/abc开头的url,不区分大小写
正则匹配: location ~ /abc { } 以/abc开头的url,区分大小写
普通匹配: location /abc { } 以/abc开头的url
注意:(正则匹配,通常用于匹配url中有正则表达式的情况)
对于有多种匹配方式,如果都匹配,优先级按上面的顺序从高到低;
对于同一种匹配方式,匹配字符串多的优先。 如 ^~ /abc 和 ^~ /abc/efg,如果url中包含了以/abc/efg开头,就会匹配第二个; 如果是/abc/ddd,就匹配第一个。
举例:
精确匹配:
前缀匹配:
正则匹配:
普通匹配:
2、负载均衡:
权重:权重高的处理更多的请求。 节点性能不一样或有特殊需求时这样配置
ip_hash:相同的ip的请求到转发到同一台节点 ,是session一致性问题的一种解决方式。
3、动静分离:
nginx+tomcat的架构中,tomcat擅长处理动态资源和请求,但是nginx更适合处理静态资源。
静态资源的配置:
在/usr/local/nginx/html目录下创建一个 images目录,并在目录下放入一张图片mv.png图片。
配置方式1:
root是一个相对路径,最终结果是:使用root路径+location路径
配置方式2:
alias是绝对路径,最终结果是: 只使用alias路径
对于上面的两种配置方式:http://域名/images/mv.png
注意: 如果location中的配置以 / 结尾: /images/ ,则alias配置也要/结尾,root则无所谓。