Nginx
Vue使用npm命令打包:npm run build
Nginx的定位:主要用于做反向代理,一般都是用它来做前端页面的服务器,动态资源代理到后端服务器。这样做的好处是可以避免跨域请求带来的不便。
我们知道,在前端我们开发的时候,进行了反向代理配置,但那只是开发环境,我们部署的时候,不可能去启动一个webstorm。webstrom是IDE,仅仅是一个开发工具,跟部署没有半点关系。那么我们要解决在开发的时候使用反向代理配置,就只能选择一个具备这种功能服务器进行部署。Nginx就具备这样的功能。
1. Nginx是什么
Nginx是一个高性能的基于HTTP的反向代理的服务器、也是一个基于SMTP和POP3的邮件服务器
其主要功能就类似于Tomcat,对外提供资源共享
反向代理(Reverse Proxy)是指以代理服务器来接收客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端
反向代理的作用:
-
保证内网的安全,阻止web攻击,因为客户端是无法感知真正做事的服务器的存在
-
负载均衡:代理服务器将接收的请求均分给被代理的服务器
2. Nginx能干什么
Nginx既然是服务器,那么其能做的事就是数据共享,具体体现如下:
-
虚拟主机
虚拟主机就是虚拟服务器,就跟Java虚拟机差不多,Java虚拟机虽然是虚拟的,但也具备计算机的功能,也能运行。虚拟主机也一样,虽然不存在,但Nginx可以虚拟出来,对外提供服务
-
反向代理
前面已经介绍过
-
负载均衡
负载就是服务器承载的负荷,所谓均衡指的是多个服务器之间的负荷对比,单个服务器没有均衡的说法。负载均衡就是指多个服务器之间处理的请求数量要大致相同
-
动静分离
动指的是资源会变化,比如从服务器获取的数据。
静指的就是资源不会变化,比如从服务器获取的html、css、js、图片等。
动静分离指的是动态资源放在服务器上处理,静态资源放在nginx上处理。
3. Nginx的安装及目录说明
演示
4. Nginx配置
nginx的学习也就是配置文件的学习
4.1 虚拟主机配置
server {
listen 8888;
server_name localhost;
location /{
root d:/demo;
index index.html;
}
}
4.2 反向代理配置
# 以/electronic/开始的请求会被代理到另外的服务器访问
location /electronic/ {
proxy_pass http://localhost:9000/;
}
4.3 负载均衡配置
upstream electronicServer {
server localhost:9000;
server localhost:9001;
}
# 以/electronic/开始的请求会被代理到另外的服务器访问
location /electronic/ {
proxy_pass http://electronicServer/;
}
-
负载均衡—轮询
upstream electronicServer { server localhost:9000; server localhost:9001; }
-
负载均衡—权重
upstream electronicServer { server localhost:9000 weight=2; #权重越大,被分配处理的请求越多 server localhost:9001 weight=1; }
-
负载均衡—ip_hash
ip_hash就是通过请求的ip地址,使用hash算法,算出来应该访问那一台服务器,如果是ip地址没变,那么这个请求的服务器 就永远都不会变
upstream electronicServer { ip_hash; # 负载均衡规则 server localhost:9000; server localhost:9001; }
4.4 动静分离
5. 附录: 匹配规则
-
=
= 开头表示精确匹配
-
^~
^~ 开头 表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
-
-
~
- 开头表示区分大小写的正则匹配
-
~*
~* 开头表示不区分大小写的正则匹配
-
!~
!~开头表示区分大小写不匹配
-
!~*
!~*开头表示不区分大小写不匹配
-
/
/ 通用匹配,任何请求都会匹配到。