【Linux】Nignx及负载均衡&动静分离

一、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 
  1. 启动 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个修改的配置如下

  1. HTTP端口,默认8082(我这里更改过端口号所以),如下改为8081

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

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

启动Tomcat服务器访问

测试访问

http://192.168.195.139:8082/

http://192.168.195.139:8081/

配置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的请求

相关推荐
乱码三千1 分钟前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei373 分钟前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei373 分钟前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei373 分钟前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh4 分钟前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW7 分钟前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW15 分钟前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux
春天花会开13115 分钟前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https
yunwei3716 分钟前
eBPF 开发者教程: 简单的 XDP 负载均衡器
linux·后端·性能优化
yunwei3719 分钟前
超越 eBPF 的极限:在内核模块中定义自定义 kfunc
linux·后端·性能优化