1. Nginx是什么
Nginx是一个高性能的基于HTTP的反向代理的服务器、也是一个基于SMTP和POP3的邮件服务器 其主要功能就类似于Tomcat,对外提供资源共享.
2. Nginx能干什么
Nginx既然是服务器,那么其能做的事就是数据共享,具体体现如下:
-
虚拟主机
虚拟主机就是虚拟服务器,就跟Java虚拟机差不多,Java虚拟机虽然是虚拟的,但也具备计算机的功能,也能运行。虚拟主机也一样,虽然不存在,但Nginx可以虚拟出来,对外提供服务
-
反向代理
反向代理(Reverse Proxy)是指以代理服务器来接收客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端
反向代理的作用:保证内网的安全,阻止web攻击,因为客户端是无法感知真正做事的服务器的存在 负载均衡:代理服务器将接收的请求均分给被代理的服务器
-
负载均衡
负载就是服务器承载的负荷,所谓均衡指的是多个服务器之间的负荷对比,单个服务器没有均衡的说法。负载均衡就是指多个服务器之间处理的请求数量要大致相同
-
动静分离
动指的是资源会变化,比如从服务器获取的数据。
静指的就是资源不会变化,比如从服务器获取的html、css、js、图片等。
动静分离指的是动态资源放在服务器上处理,静态资源放在nginx上处理。
3. Nginx配置
3.1虚拟主机配置
server {
listen 8089;
server_name localhost;
location /{
root g:/demo;
index index.html;
}
}
3.2 反向代理配置
# 以/exam/开始的请求会被代理到另外的服务器访问
location /exam/ {
proxy_pass http://localhost:8088/;
}
4.3 负载均衡配置
upstream electronicServer {
server localhost:8088;
server localhost:8099;
}
# 以/electronic/开始的请求会被代理到另外的服务器访问
location /exam/ {
proxy_pass http://examServer/;
}
负载均衡---轮询
upstream electronicServer {
server localhost:8088;
server localhost:8099;
}
负载均衡---权重
upstream electronicServer {
server localhost:8088 weight=2; #权重越大,被分配处理的请求越多
server localhost:8099 weight=1;
}
负载均衡---ip_hash
ip_hash就是通过请求的ip地址,使用hash算法,算出来应该访问那一台服务器,如果是ip地址没变,那么这个请求的服务器 就永远都不会变
upstream examServer {
ip_hash; # 负载均衡规则
server localhost:8088;
server localhost:8099;
}
4. 附录: 匹配规则
-
=
= 开头表示精确匹配
-
^~
^~ 开头 表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
-
~
~ 开头表示区分大小写的正则匹配
-
~*
~* 开头表示不区分大小写的正则匹配
-
!~
!~开头表示区分大小写不匹配
-
!~*
!~*开头表示不区分大小写不匹配
-
/
/ 通用匹配,任何请求都会匹配到。