一、Nginx简介
1.1 什么是nginx?
Nginx(发音同"engine x")是一个高性能的反向代理和 Web 服务器软件,最初是由俄罗斯人 Igor Sysoev 开发的。Nginx 的第一个版本发布于 2004 年,其源代码基于双条款 BSD 许可证发布,因其系统资源消耗低、运行稳定且具有高性能的并发处理能力等特性,Nginx 在互联网企业中得到广泛应用。
Nginx 是互联网上最受欢迎的开源 Web 服务器之一,它不仅提供了用于开发和交付的一整套应用技术,还是应用交付领域的开源领导者。Netcraft 公司 2019 年 7 月的统计数据表明,Nginx 为全球最繁忙网站中的 25.42% 提供了服务或代理,进一步扩大了其在主机域名领域的占有量,新增 5220 万个站点,总数达 4.4 亿个,市场占有率已经超过 Apache 4.89%。
得益于近几年云计算和微服务的快速发展,Nginx 因在其中发挥了自身优势而得到广泛应用,且有望在未来占有更多的市场份额。
2019 年 3 月,著名硬件负载均衡厂商 F5 宣布收购 Nginx,Nginx 成为 F5 的一部分。F5 表示,将加强对开源和 Nginx 应用平台的投资,致力于 Nginx 开源技术、开发人员和社区的发展,更大的投资将为开放源码计划注入新的活力,会主办更多的开放源码活动,并产生更多的开放源码内容。
百度解释:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
总结:Nginx(engine x)是一个高性能的
HTTP
(解决C10k的问题)和反向代理
服务器,能够实现动静分离技术(动态请求和静态请求),也是一个IMAP/POP3/SMTP
服务器,
1.2、相关名词解释
HTTP:HTTP的服务器端实现程序有httpd、nginx等,而且nginx支持高并发!👉HTTP
反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
SMTP:SMTP是一种提供可靠且有效的电子邮件传输的协议。(非重点)
Nginx官网https://nginx.org/
1.3、Nginx优势
nginx优势:高并发、I/O多路复用、epoll模型:异步且非阻塞
-
I/O多路复用(重点)
- 理论:I是input输入,O是output输出,nginx的I/O多路复用,提高了服务器的吞吐能力,同一个线程里面,通过开关的方式,来同时传输多个I/O流,比如你去帮同事解决问题,A同事问你错误原因,B同时问你怎么安装的问题,你同时去帮他们解决;
- 技术分类:select、poll、epoll(epoll模块实现I/O多路复用)
- 特点:异步、非阻塞
- 特点比喻:
- 同步:比如AB石头剪刀布同时出为同步
- 异步:石头剪刀布不同时出异步
- 阻塞:去上厕所,不上完厕所不去干别的事
- 非阻塞:厕所人多可以先去忙别的
编辑
-
时分多路复用:时分多路复用 (Time-Division Multiplexing,TDM )是一种数字或者模拟(较罕见)的多路复用技术,比如CPU的分时计算,你想去听歌或者看电影,CPU需要不断的切换去处理你的个人需求,把时间分成块,只不过处理的比较快,个人感觉不到。
-
频分多路复用:频分多路复用,是在适于某种传输媒质的传输频带内,若干个频谱互不重叠的信号一并传输的方式,比如现在既可以打电话也可以上网,就是用到了此技术。
二. nginx的安装
1. 安装4个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 下载并解压安装包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
有安装包可以自行导入
进入存放nginx压缩包的文件夹进行解压
tar -xvf nginx-1.13.7.tar.gz
3.安装nginx
# 进入安装包目录
cd nginx-1.13.7
# 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module

# 安装
make && make install

- 启动 nginx 服务
安装好的 nginx 服务在 /usr/local/nginx 下:

进入 /usr/local/nginx/sbin 目录下启动:
# 启动
./nginx
# 重启
./nginx -s reload
# 关闭
./nginx -s stop
# 或者,指定配置文件启动
./nginx -c /usr/local/nginx/conf/nginx.conf

查看nginx是否使用
下载插件
yum install -y lsof

lsof -i:80

由于没有80端口号所有使用命令开发80端口号

外部访问测试

三. tomcat负载均衡
准备Tomcat
#准备2个tomcat
cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/
第2个修改的配置如下
- HTTP端口,默认8082(我这里更改过端口号所以),如下改为8081

2.远程停服务端口,默认8005,如下改为8006

3.AJP端口,默认8009,如下改,8010

启动Tomcat服务器访问
测试访问


配置nginx负载均衡

重启nginx配置文件
进入/sbin/重启
# 重启
./nginx -s reload
问题1:这个错误,意思是nginx配置的URL地址前缀不正确,后来重新看了下,发现的确是前缀没有写好


问题2:错误的原因:未指定nginx.conf的位置,启动时无法加载配置文件

进入logs目录,发现缺失了nginx.pid文件,配置文件加载了的情况下,是有这个文件的
解决办法:使用nginx -c的参数,指定配置文件的位置
#启动文件nginx在sbin目录中,配置文件在conf目录中
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
四、前端部署
1. 准备
前端项目打包之前需要增加以下的设置
在前端项目中 config文件下的index.js中要增加以下代码 :
assetsPublicPath: './',//修改后
如图:

在前端项目中 build文件下的 utils.js 中增加以下代码 :
// 解决icon路径加载错误
publicPath:'../../'
如图:

在前端项目的跟目录中,cmd打开命令窗口
输入命令 : npm run build ( 进行前端项目打包 )
如图 :

命令执行后,会出现如图中以下文件 dist
在 /usr/local/ 目录下创建一个文件夹,为mypor ,并且进入文件夹,之后将blog文件拖入mypor文件夹中
解压前端
yum install -y unzip

使用命令解压指定解压包
unzip blog.zip

2. 部署
输入命令 : cd /usr/local/nginx/conf/ 找到nginx.conf进行编辑

输入命令 : cd /usr/local/nginx/sbin/
输入命令 :./nginx -s reload 重启nginx
在将后端的war包 传入tomcat服务器中。
并且输入命令 : ./startup.sh (开启访问)

在到文件资源管理器中进入到 以下本地目录
C:\Windows\System32\drivers\etc
找到 hosts 文件进行修改IP的请求