1、Nginx
1.1、什么是Nginx
Nginx最初由Igor Sysoev开发,最早在2004年公开发布。它被设计为一个轻量级、高性能的服务器,能够处理大量并发连接而不消耗过多的系统资源。Nginx的架构采用了事件驱动的方式,能够高效地处理请求。它的模块化设计使得用户可以根据需要添加不同的功能,比如SSL支持、URL重写、缓存等。Nginx的高性能和灵活性使得它成为了许多大型网站和应用的首选服务器软件。
1.2、Nginx优缺点
优点
-
高并发量:根据官方给出的数据,能够支持高达 50,000 个并发连接数的响应。
-
内存消耗少:处理静态文件,同样起web 服务,比apache 占用更少的内存及资源,所以它是轻量级的(至于区别在哪?后面内容进行分析)。
-
简单稳定:一般在使用 Nginx 中,针对单个域名配置文件配置接口,学习成本很低。相比 Apache 配置简单很多。
-
模块化程度高:Nginx是高度模块化的设计,编写模块相对简单,包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。
-
支持Rwrite重写规则:能够根据域名、URL的不同, 将HTTP请求分发到不同的后端服务器群组。
-
低成本:Nginx可以做负载均衡,且Nginx是开源免费的,如果使用商业软件F5等硬件来做负载均衡,硬件成本比较高。
-
支持多系统:Nginx是由C语言开发,适用于各个平台。
缺点
-
动态处理能力较差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。
-
rewrite弱:虽然Nginx支持rewrite功能,但是相比于Apache来说,Apache比Nginx 的rewrite 强大。Apache 配置 rewrite 是通过项目下面的.htaccess 文件做配置还有就是打开 Apache 配置中的 rewrite 模块。而 Nginx 则需要在做域名配置时,对 rewrite 做配置。
1.3、Nginx正向代理与反向代理
1.3.1、正向代理
正向代理:意思是当客服端去访问,或者请求某个地址的时候无法正常访问,其而通过中间服务器去代理客服端的请求去访问对应的网址或者地址,这就是正向代理;正向代理代理的是客户端
1.3.2、反向代理
反向代理:它代表客户端向后端服务器发送请求,并将后端服务器的响应返回给客户端。与常规代理服务器不同的是,反向代理隐藏了后端服务器的真实地址,使得客户端只能看到反向代理服务器的地址。这种方式可以提高安全性、负载均衡和性能优化。反向代理代理的是服务器;
2、Linux安装配置Nginx
2.1、安装配置Nginx的官方yum源
#配置Nginx的yum源(时间较长请耐心等待)
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm
如图
2.2、添加防火墙端口
2.3、访问效果
3、SPA项目发布
3.1、创建静态资源目录,并指定nginx的root静态资源
3.2、访问效果
4、Nginx负载均衡
4.1、Nginx之反向代理
上传jdk和tomcat、mysql压缩包到linux中,并解压,操作看Linux之单机项目部署-CSDN博客https://blog.csdn.net/2302_78041486/article/details/139095568?spm=1001.2014.3001.5501 导入数据库脚本,在mysql中
在tomcat中配置后端项目
后端项目访问
注:关闭Linux中8080端口,用nginx实现反向代理操作如下:
配置nginx的核心文件,进行反向代理操作
访问时出现如下错误!!!!!
# 切换到nginx的日志目录
cd /var/log/nginx/
# 查看日志信息
tail -f error.log
解决方案:关闭SeLinux
setsebool -P httpd_can_network_connect 1
4.2、Nginx之负载均衡
复制一个tomcat服务器,进行修改server.xml文件内部端口配置即可,操作如图:
配置nginx内部文件即可
upstream tomcats{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80;
server_name www.zking.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location ^~ /api/ {
proxy_pass http://tomcats/;
}
启动两台tomcat服务
第一次登录
看响应结果
第二次登录
进行了负载均衡操作,
4.3、Nginx之负载均衡策略
轮询法:
将请求轮流分配到注册的后端服务器中,平等的对待所用的后端服务器,不关心服务器的实际连接数就负载情况。比较适合后端服务器的配置都差不多的情况。例如如下配置:
upstream server {
server 192.160.0.123:8080;
server 192.160.0.124:8080;
server 192.160.0.125:8080;
}
加权轮询:
可以为每个武器配置一个权重值,权重值越大将会有机会分担更多的请求,该配置方式比价适合集群中各个服务器配置不均衡的情况,对高的服务器可以配置大一些的权重,对配置低的机器可以配置小一些的权重。
upstream server {
server 192.160.0.123:8080 weight=4;
server 192.160.0.124:8080 weight=2;
server 192.160.0.125:8080 weight=1;
}
原地址哈希:
根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器的大小进行取模计算,得到的结果作为客户端要访问的服务器的序号。
特点:这种方式可以保证来自同一ip的请求被打的固定机器上,可以解决session问题。
upstream server {
ip_hash;
server 192.160.0.123:8080 weight=1;
server 192.160.0.124:8080 weight=2;
server 192.160.0.125:8080 weight=1;
}
最小连接数法:
该算法根据后端服务器当前的连接情况,动态的选取其中当前堆积的连接数最少的一台服务器来处理请求,以便于提高服务的利用率。
这种算法比较适合后端各个服务器配置不同的情况。
upstream server {
least_conn;
server 192.160.0.123:8080 weight=1;
server 192.160.0.124:8080 weight=2;
server 192.160.0.125:8080 weight=1;
}
Fair:
Fair负载均衡比基于权重,和ip_hash算法更加智能,可以根据后端服务器的响应时间来分配请求,响应时间短优先分配。
该算法由第三方提供,需要安装upstream_fair模块。
upstream server {
fair;
server 192.160.0.123:8080 weight=1;
server 192.160.0.124:8080 weight=2;
server 192.160.0.125:8080 weight=1;
}
url_hash:
与ip_hash比较接近,该算法根据url的哈希结果来分配请求,使每个url定向到一台后端服务器上。
该算法为第三方提供,使用时需要先安装Nginx的hash软件包
upstream server {
hash $request_uri;
server 192.160.0.123:8080 weight=1;
server 192.160.0.124:8080 weight=2;
server 192.160.0.125:8080 weight=1;
}