Nginx

Nginx的安装

下载地址 https://nginx.org/en/download.html
使用Xftp7上传到Linux
步骤:
第一步:安装相关依赖

yum install gcc-c++ 
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

第二步:解压并重命名

tar -zxvf nginx-1.22.0.tar.gz
mv nginx-1.22.0 nginx

第三步:新建并剪切

mkdir /usr/local/nginx
cp -r nginx /usr/local/nginx

第四步:指定安装路径

cd /usr/local/nginx/nginx
./configure --prefix=/usr/local/nginx

第五步:编译和安装

make
make install

第六步:启动

cd /usr/local/nginx/nginx/sbin
./nginx   启动nginx 

cd /usr/local/nginx/nginx/conf
vim nginx.conf  可以查看到默认端口号为80 

在这里插入图片描述

查看开放的端口号(默认没有)
firewall-cmd --list-all

在这里插入图片描述
设置开放端口号

 sudo firewall-cmd --add-port=80/tcp --permanent   80就是你设置的端口号
 firewall-cmd --reload      重启防火墙

再次进行查看
在这里插入图片描述
这个时候你就可以在网页中访问nginx了
在这里插入图片描述

Nginx相关命令(必须在sbin下才可以)

cd /usr/loca/nginx/nginx/sbin
  1. 查看版本号
  ./nginx -v  
  1. 启动
 ./nginx
  1. 停止
 ./nginx -s stop
  1. 刷新 (应用于修改了配置文件需要重新启动nginx)
  ./nginx -s reload

反向代理一

需要有tomcat,如未安装,请移步Linux文章(在最后面)

1、实现效果:
打开浏览器,在浏览器地址栏输入地址 www.123.com就可以进行访问,不需要写之前的192.127.xx.xxx:8080/xxx

步骤如下:

对外开放访问端口

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload

查看已经开放的端口号

firewall-cmd --list-all

第一步:在win中进行域名和IP的配置
在这里插入图片描述在这里插入图片描述
第二步:在nginx中进行配置

cd /usr/local/nginx/nginx/conf
vim service.xml

请添加图片描述
第三步:测试

在这里插入图片描述

反向代理二

实现效果: 使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
例如:
访问 http://192.168.17.129:9001/edu/ 直接跳转到 127.0.0.1:8080的edu文件
访问 http:// 192.168.17.129:9001/vod/ 直接跳转到 127.0.0.1:8081的vod文件

步骤如下:

第一步:创建两个目录

mkdir tomcat8080 tomcat8081

然后把tomcat文件中的tomcat-9.0.30直接复制到创建好的那两个目录中

cp -r /usr/local/tomcat/tomcat-9.0.30/ /root/tomcat8081
cp -r /usr/local/tomcat/tomcat-9.0.30/ /root/tomcat8080

第二步:修改8081端口

cd tomcat8081/tomcat-9.0.30/conf
vim server.xml

在这里插入图片描述
第三步:启动两个tomcat和nginx并进行测试

cd /usr/local/nginx/nginx/sbin
./nginx
cd tomcat8081/tomcat-9.0.30/bin
./startup.sh 
cd tomcat8080/tomcat-9.0.30/bin
./startup.sh 

在这里插入图片描述

在这里插入图片描述

注意:测试8081不成功怎么办???
原因可能是没有开放端口

firewall-cmd --add-port=8081/tcp --permanent 
firewall-cmd --reload

第四步:分别在tomcat8080和8081中的webapps中新建文件夹,存放一个html文件

8080/webapps/edu/a.html
8081/webapps/vod/b.html

第五步:nginx/conf/service.conf配置文件

cd /usr/local/nginx/nginx/conf
vim nginx.conf

   server {
        listen          9001;
        server_name     192.168.43.128;

        location ~ /edu/ {
            proxy_pass   http://127.0.0.1:8080;
        }
        location ~ /vod/ {
            proxy_pass   http://127.0.0.1:8081;
        }
    }

在这里插入图片描述

第六步:测试

在这里插入图片描述在这里插入图片描述
不成功的原因:
99%是配置文件的问题
server不要写到上一个server里面去了!!!!
在这里插入图片描述

负载均衡

实现效果:
(1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均分配到8080
和 8081 端口中

操作步骤:

第一步:在两台tomcat中的webapps目录中创建名为 edu文件夹,里面放入一个 a.html文件用于测试
第二步:nginx中进行配置

cd /usr/local/nginx/nginx/conf
vim nginx.conf

在这里插入图片描述

第三步:刷新并测试

cd /usr/local/nginx/nginx/sbin
./nginx -s reload

点击刷新,他会跳转到8080/8081里面
在这里插入图片描述

负载均衡分配策略

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight(权重)
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
在这里插入图片描述

3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题
(大概的意思是:我用一个IP地址进行访问,假设第一次访问的是8080服端口,后面就一直都是这个,不会访问到其他端口)
在这里插入图片描述

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
在这里插入图片描述

动静分离

严格意义上说应该是动态请求静态请求分开
可以理解成使用 Nginx 处理静态页面Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种,

  1. 第一种纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
  2. 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使
浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资
设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,
所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,
不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL发送
一个请求
,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码
304,如果有修改,则直接从服务器重新下载,返回状态码 200。

在这里插入图片描述

操作步骤:

第一步:创建文件

mkdir data
cd data
mkdir image www

在image中放入一张图片
www中放入一个页面
第二步:配置

cd /usr/local/nginx/nginx/conf
vim nginx.conf

在这里插入图片描述
第三步:测试
http://192.168.43.128/image/1.png
http://192.168.43.128/www/a.html

在这里插入图片描述

集群(主从模式)

主服务器宕机了就会自动切换备用服务器
这里的keepalived相当于redis中的哨兵一样,用来监测主服务器是否宕机
这个虚拟ip是暴露在外的,用来访问,需要绑定到主服务器中,当keepalived检测到主宕机了,就把ip绑定到备服务器

在这里插入图片描述

操作步骤

第一步:启动两台nginx
可以开启两个虚拟机,然后都安装nginx tomcat keepalived
usr目录下安装keepalived

安装
yum install keepalived –y
测试  
rpm -q -a keepalived

第二步:修改keepalivec.conf配置文件
把下面的复制到 keepalived.conf 文件中
然后直接复制到 /etc/keepalived中

cd /ect/keepalived
vim keepalived.conf


global_defs { notification_email {
acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.17.129
smtp_connect_timeout 30 router_id LVS_DEVEL
}

vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" interval 2	#(检测脚本执行的间隔)

weight 2
}
vrrp_instance VI_1 {
state MASTER	# 备份服务器上将 MASTER 改为 BACKUP interface ens33 //网卡
virtual_router_id 51	# 主、备机的 virtual_router_id 必须相同
priority 100	# 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}

第三步:在/usr/local/src添加检测脚本
把下面的复制到 nginx_check.sh文件中
然后把文件复制到 /usr/local/src 中

#!/bin/bash
A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx sleep 2   # nginx启动路径
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived
fi
fi

以上是主服务器的配置,备用服务器也是一样的,只需在第二步中把master修改一下,100改小一点就可以了
第四步:把两台服务器上 nginx 和 keepalived 都启动

./nginx
systemctl start keepalived.service

第五步:测试
(1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50
在sbin下

ip a 可以查看绑定的虚拟ip

在这里插入图片描述

(2)把主服务器(192.168.17.129)nginx 和 keepalived 停止,再输入 192.168.17.50

systemctl stop keepalived.service  停止keepalived  
  sbin下  ./nginx -s stop     停止nginx

主服务器宕机,刷新页面,还是可以用,在备份服务器中可以查看绑定的虚拟ip
sbin下

 ip a 可以查看到绑定了虚拟ip

在这里插入图片描述

nginx 原理与优化参数配置

在这里插入图片描述

worker如何进行工作的?

在这里插入图片描述

3、一个 master 和多个 woker 有好处

(1) 可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
(2) 每个 woker 是独立的进程,如果有其中的一个woker 出现问题,其他 woker 独立的, 继续进行争抢,实现请求过程,不会造成服务中断

4、设置多少个 woker 合适

worker 数和服务器的 cpu 数相等是最为适宜的

5、连接数 worker_connection

发送请求,占用了 woker 的几个连接数? 答案:2 个或者 4 个
访问请求静态一去一回就是2个
访问数据库,要使用到tomcat 就是4个了,请求到woker再到tomcat 一去一回就是4

nginx 有一个 master,有四个 woker,每个woker 支持最大的连接数 1024,支持的最大并发数是多少?
 普通的静态访问最大并发数是:
• worker最大连接数×worker数量÷2
 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是
• worker最大连接数×worker数量÷4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值