零、初识Nginx和环境准备
-
Nginx介绍 "Nginx是款轻量级的HTTP服务器,采用事件驱动的异步阻塞处理式框架,这让其具有极好的IO性能,时常于服务端的反向代理和负载均衡。"
-
Nginx的优点
- 持海量并发:采用IO多路复epoll。官方测试Nginx能够支持5万并发链接,实际生产环境中可以支撑2-4万并发连接数。
- 内存消耗少:在主流的服务器中Nginx目前是内存消耗最小的了,例如我们:Nginx+PHP,在3万并发链接下,开启10个Nginx进程消耗150M内存。
- 免费使用可以商业化:Nginx为开源软件,采用的是2-clause BSD-like协议,可以免费使用,并且可以用于商业。
- 配置简单:网络和程序配置通俗易懂,即使非专业运维也能看懂。 当然它的优点还有很多,如反向代理功能,负载均衡功能
- 现在Nginx非常流行:我们可以通过连接这个网站看到,Nginx在服务器中的排名,占有率达到39.7%。
一、Nginx安装与使用
1. windows系统
- 根据不同电脑设备,下载不同版本的Nginx压缩包。
这里以,window版本的 nginx/Windows-1.18.0 为例
- 将压缩包解压至电脑的某个盘符下。
- 在该盘符nginx目录中调出命令终端,执行启动命令
cd nginx-1.18.0
nginx
### 2. Linux系统
1. Nginx版本说明
Mainline version :开发版,主要是给Nginx爱好者,测试、研究和学习的,
但是不建议使于产环境。
Stable version : 稳定版,也就是我们说的期更新版本。这种版本般较成
熟,经过时间的更新测试,所以这种版本也是主流版本。
legacy version : 历史版本,如果你需要以前的版本,Nginx也是有提供的。
2. 基于Yum的式安装Nginx
3. 安装的命令非常简单:
yum install nginx
安装完成后可以使⽤命令,来检测Nginx的版本。
nginx -v
## 二、Nginx目录简介

主要的文件是conf/nginx.conf核心配置文件,我们将在这个配置文件中完成我们项目访问路径,及静态资源加载配置。
1. 在云服务器中找到Nginx安装目录
百度云服务器 cd /etc/nginx
## 三、认识nginx.conf
1. nginx.conf中常用配置项介绍。
main # 全局配置,对全局生效 ├── events # 配置影响 Nginx 服务器或与用户的网络连接 ├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置 │ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分 │ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块 │ ├── server │ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri │ │ ├── location │ │ └── ... │ └── ... └── ...
2. 通过观察nginx.conf中的默认server配置块,完成如下配置:
server { listen 8088; server_name yooye.vip;
location / {
root /usr/share/nginx/html;
index dist/index.html;
}
}
3. 配置本地电脑的hosts文件,使得浏览器支持自定义域名yooye.vip访问。
> 自定义域名配置流程参考 [链接](https://jingyan.baidu.com/article/5bbb5a1b15c97c13eba1798a.html?qq-pf-to=pcqq.c2c)
4. 通过自定义域名yooye.top成功访问abc.html内容。
## 四、Nginx常用命令
Nginx 的命令在控制台中输入 `nginx -h` 就可以看到完整的命令,这里列举几个常用的命令:
nginx # 启动nginx服务器 nginx -s reload # 向主进程发送信号,重新加载配置文件,热重启 nginx -s reopen # 重启 Nginx nginx -s stop # 快速关闭 nginx -s quit # 等待工作进程处理完成后关闭
## 五、vue项目打包部署
1. 在vue.config.js中配置publicPath为`/static`,方便后续做nginx的资源路径配置。
2. 执行`npm run build`打包vue项目,得到dist目录。
3. 将dist目录整体放置于nginx安装目录的`html`目录下。
4. 调整nginx.conf中的配置,保证用户可以通过自定义域名,访问到dist中的index.html。
配置参考:
server { listen 80; server_name yooye.vip;
location / {
root html;
index dist/index.html;
}
location /static { #静态资源访问配置
alias html/dist;
autoindex on;
autoindex_exact_size off;
autoindex_localtime off;
}
location ^~/api/ { #nginx代理配置
proxy_pass http://localhost:3000/; #注意这个域名后面的/一定要保留,不保留无法剔除/api
}
location ^~/hello/ {
proxy_pass https://m.maoyan.com/;
}
}
## 六、nginx路径匹配规则
server 块可以包含多个 location 块,location 指令用于匹配 uri,语法:
location [ = | ~ | * | ^] uri {
...
}
代码指令后面:
1. = 精确匹配路径,用于不含正则表达式的 uri 前,如果匹配成功,不再进行后续的查找;
2. ^~ 用于不含正则表达式的 uri; 前,表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找;
3. ~ 表示用该符号后面的正则去匹配路径,区分大小写;
4. ~* 表示用该符号后面的正则去匹配路径,不区分大小写。跟 ~ 优先级都比较低,如有多个location的正则能匹配的话,则使用正则表达式最长的那个;
如果 uri 包含正则表达式,则必须要有 ~ 或 ~* 标志。
## 七、Nginx中模块化配置文件
因为在nginx上部署的项目可能会比较多,为了独立维护每一个项目的配置项文件,我们需要将单个项目的配置文件独立提取。
1. 在nginx安装目录下新建conf.d文件夹
2. 在该文件夹中新建yooye.vip.conf文件
3. 在yooye.vip.conf中写入上一步的项目配置的server块
4. 在nginx.conf中使用`include`引入conf.d文件夹中的配置文件
http { include D:/r/nginx-1.18.0/conf.d/*.conf; #注意这里采用绝对路径引入 server { listen 8088; server_name localhost; location / { root html; index index.html index.htm; } location = /50x.html { root html; } } }
## 八、Nginx的gzip加速
对比gzip开启与关闭状态下,vue项目的首屏加载速度
http { gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 8; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript; gzip_vary on; gzip_disable "MSIE [1-6]."; }