nginx学习笔记

nginx是什么

类似于tomcat,web应用服务器,tomcat一般处理需要编译的动态资源。一般都是静态资源服务器和动态资源服务器是分开部署的。为了提高服务器的效率,静态资源可以大量使用缓存。

Apache 静态资源服务器和nginx都可以作为静态资源服务器

nginx是一个反向的静态资源服务器。

反向代理一般是用在服务器端,做请求的分发,能实现负载均衡。

nginx 安装和服务启动

1、安装nginx服务需要的插件

yum install -y yum-utils

在这里插入图片描述

2、安装 nginx

在官方yum源中也是没有nginx的,但是我们可以在本机去配置nginx的yum源,来实现nginx的yum安装。

在这里插入图片描述

然后再创建一个nginx.repo的文件:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
vim nginx.repo

在这里插入图片描述

i 插入后,esc,:wq 保存退出

使用yum源安装 nginx

[root@localhost yum.repos.d]# yum install -y nginx

安装成功

在这里插入图片描述

3、nginx服务的管理命令:

启动nginx服务
systemctl start nginx
停止nginx服务
systemctl stop nginx
禁用nginx服务
sysemctl disable nginx
查看nginx服务的启动状态
systemctl status nginx

4、查看下nginx服务是否开启

[root@localhost yum.repos.d]# systemctl status nginx

nginx服务没有开启

在这里插入图片描述

启动nginx服务,并查看nginx服务状态

[root@localhost yum.repos.d]# systemctl start nginx
[root@localhost yum.repos.d]# systemctl status nginx

在这里插入图片描述

启动之后,在宿主机(windows电脑上)的浏览器测试是否能连接上nginx服务器。

nginx服务器默认端口号是 80

注意:防火墙一定要关闭

[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# systemctl status firewalld

在这里插入图片描述

在浏览器上输入 http://192.168.25.10/

在这里插入图片描述

在这里插入图片描述

nginx 安装成功。

5、需要关闭linux操作系统的selinxu服务

selinux是linux的安全服务套件。

修改 vi /etc/selinux/confifig文件,修改如下内容:

[root@localhost yum.repos.d]# vi /etc/selinux/config

在这里插入图片描述

修改过之后,必须重启linux。

测试实例:nginx代理百度

比如我们想让nginx代理百度,可以修改它的配置文件。

[root@localhost ~]# vi /etc/nginx/nginx.conf

在这里插入图片描述

  • user nginx; ---- nginx使用的默认的用户名

可以查看下系统用户

vi /etc/passwd

在这里插入图片描述

可以看到,创建了一个nginx的用户。

worker_processes 1; ----- nginx工作的进程数

进程数一般配置成跟操作系统的核心一样,效率最高,比如电脑是4核的,这里可以配置4,或者是操作系统核心数的2倍也可以。

error_log 错误日志

pid nginx启动的进程号

worker_connections 1024; #每个nginx进程最大支持多少个并发连接

计算nginx最多支持多少并发量 :worker_processes 乘以 worker_connections

keepalive_timeout 65;

配置http协议的长连接的超时时间为65秒。

我们以后经常修改的配置文件是 /etc/nginx/conf.d/default.conf

[root@localhost ~]# cd /etc/nginx/conf.d
[root@localhost conf.d]# ls
default.conf
[root@localhost conf.d]# vi default.conf

在这里插入图片描述

重启nginx服务,查看nginx服务启动状态

[root@localhost conf.d]# systemctl restart nginx
[root@localhost conf.d]# systemctl status nginx

在浏览器中访问 http://192.168.25.10/,跳转到百度页面

在这里插入图片描述

补充:如果没有跳转到百度页面,可以清楚下浏览器的缓存,重新加载页面。

使用nginx实现tomcat的负载均衡

1、首先要在我们linux服务器上启动两个tomcat

准备好tomcat 和 jdk的linux版本的安装包,

在这里插入图片描述

通过Xftp上传到linux系统中

在这里插入图片描述

先配置jdk。

解压缩jdk

[root@localhost opt]# tar -xvf jdk-8u171-linux-x64.tar.gz

配置jdk环境变量

在这里插入图片描述

[root@localhost jdk8]# vim /etc/profile

在这里插入图片描述

JAVA_HOME=/opt/jdk8/
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH

然后 保存退出 ,在命令行执行 source 命令 编译环境变量文件,让环境变量立刻生效:

source /etc/profile

在这里插入图片描述

[root@localhost jdk8]# cd ..
[root@localhost opt]# ls
apache-tomcat-8.5.32.tar.gz  cluster  jdk8  redis-5.0.4  redis-5.0.4.tar.gz
[root@localhost opt]# tar -xvf apache-tomcat-8.5.32.tar.gz

tomcat 启动:

在这里插入图片描述

在浏览器访问 http://192.168.25.10:8080

在这里插入图片描述

查看tomcat有没有启动

ps -ef|grep tomcat

在这里插入图片描述

关闭tomcat服务

./shutdown.sh

在这里插入图片描述

2、准备两个tomcat 一个端口号弄成8000 另外一个9000

在这里插入图片描述

将端口号改为 8000

在这里插入图片描述

另一个tomcat端口号为9000

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

生产环境中,不能把两个tomcat部署到一起,nginx也不能把tomcat部署到一起,请求会通过nginx服务器分发到两台电脑上。部署项目,一个项目需要部署两份相同的。访问8080,其实访问的也是一个项目,访问的是webapps目录下root的根项目,部署项目也可以把项目打成war包放到webapp下面。

在这里插入图片描述

访问doc项目,http://192.168.25.10:8000, 不写项目名访问的是 ROOT项目。

在这里插入图片描述

访问 http://192.168.25.10:8000/docs

在这里插入图片描述

访问 http://192.168.25.10:8000/examples

在这里插入图片描述

判断访问的是8000的项目还是9000的项目。

在这里插入图片描述

在这里插入图片描述

访问 http://192.168.25.10:8000

在这里插入图片描述

按照同样的步骤改下 tomcat9000的项目

[root@localhost ROOT]# vim /opt/tomcat9000/webapps/ROOT/index.jsp

在这里插入图片描述

启动tomcat9000

[root@localhost opt]# ./tomcat9000/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat9000
Using CATALINA_HOME:   /opt/tomcat9000
Using CATALINA_TMPDIR: /opt/tomcat9000/temp
Using JRE_HOME:        /opt/jdk8/
Using CLASSPATH:       /opt/tomcat9000/bin/bootstrap.jar:/opt/tomcat9000/bin/tomcat-juli.jar
Tomcat started.
[root@localhost opt]# 

查看下服务进程

在这里插入图片描述

浏览器访问 http://192.168.25.10:9000

在这里插入图片描述

3、修改nginx的配置文件

[root@localhost opt]# vim /etc/nginx/conf.d/default.conf

shift + o, 在第一行配置负载均衡的服务器, nginx服务转发的服务器i 和端口号

#配置负载均衡的服务器
upstream aaa{
    server 192.168.25.10:8000;
    server 192.168.25.10:9000;
}

在这里插入图片描述

注意: proxy_pass http://aaa; 和upstream的命名一致。

保存退出。

重新启动nginx

systemctl restart nginx

在这里插入图片描述

浏览器访问 http://192.168.25.10 ,刷新一次是访问8000,再刷新一次是访问9000。

默认是轮询。

nginx支持的负载均衡的策略

轮询策略

默认nginx 支持的策略 。 来了请求之后 排队把请求一个一个的分发出去。

权重策略

##配置负载均衡的服务器
upstream aaa{
    server 192.168.25.10:8000 weight=3;
    server 192.168.25.10:9000 weight=1;
}

数字是可以自定义的。上面的权重配比,比如发了4个请求,3个请求是转发给8000的服务器,1个请求时转发给9000的服务器。

如果不配置权重,就是一次8000,一次9000

在这里插入图片描述

重启nginx服务。

在浏览器访问 http://192.168.25.10

IP_HASH方式

根据 客户端ip地址 固定分配到一台服务器上,以后这个ip来的所有请求 都会只到这一个服务器上。

在这里插入图片描述

重启nginx,在浏览器测试访问 http://192.168.25.10, 如果第一次访问的是某个服务器,那么以后都访问这个服务器。

好处:解决session共享问题。

在这里插入图片描述

保存退出。重启nginx。

结束tomcat9000的进程

浏览器访问 http://192.168.25.10 , 一直访问的是8000

重新启动tomcat9000服务器,浏览器测试访问,又可以轮询访问了。只要服务器没有全部挂掉,可以持久的提供服务。

keepalived实现高可用

上面我们实现的集群方式 可以解决tomcat 服务器单点故障的问题,但是解决不了 nginx服务器单点故

障的问题。

解决nginx 单点故障问题,市场上通用的解决方案就是使用keepalived 这种插件。

安装keepalived服务
yum install -y keepalived

安装成功

在这里插入图片描述

下面修改keepalived的配置文件: vim /etc/keepalived/keepalived.conf文件

vim /etc/keepalived/keepalived.conf
global_defs {
	notification_email {
    	#keepalived如果检测到nginx服务不能用会往这个邮件发信息
    	test@163.com 
    }
    #配置邮件服务器的信息
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_MASTER
}
#声明一个脚本
vrrp_script chk_http_port {
    #检测本机nginx的服务是否能用的脚本 这个脚本等下要自己编写
    script "/usr/local/src/check_nginx_pid.sh"
    #每隔多长时间自动调用上述脚本
    interval 2
    #权重
    weight 2 
}
vrrp_instance VI_1 {
	#state MASTER 
	#配置当前的nginx服务器是主机还是备机
    state BACKUP
    #配置当前nginx服务是是否非抢占模式
    #nopreempt
    #配置心跳网卡的名称
    interface ens33
    #所有的keepalived的服务器的虚拟化路由都要一致
    virtual_router_id 50
    #nginx服务器的初始化权重
    priority 100
	#心跳连接发送的间隔
    advert_int 1
    #认证方式和认证密码 要保证所有keepalive的服务器的验证方式和 密码都一样
    authentication { 
    	auth_type PASS 
    	auth_pass 1111 
    }
    #启用上述脚本
    track_script { 
    	chk_http_port
    }
    virtual_ipaddress {
    	#配置了keeplived服务器之后再访问tomcat集群虚拟的ip地址时多 少
    	192.168.25.222#虚拟ip
    }
}

d + G 把原来的删掉,i 插入,复制粘贴。

下一步,写/usr/local/src/check_nginx_pid.sh这个脚本:

vim /usr/local/src/check_nginx_pid.sh
#! /bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl start nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

创建好这个脚本之后,不要忘记修改文件的权限, 可以执行

[root@localhost src]# chmod 777 check_nginx_pid.sh

在这里插入图片描述

下面启动keepalived服务:

systemctl start keepalived

在这里插入图片描述

nginx如果关掉,keepalived会自动把nginx服务启动。

在这里插入图片描述

克隆一个虚拟机,192.168.25.12

启动tomcat8000,tomcat9000服务

[root@localhost opt]# ./tomcat8000/bin/startup.sh
[root@localhost opt]# ./tomcat9000/bin/startup.sh

启动keepalived服务

[root@localhost opt]# systemctl start keepalived
[root@localhost opt]# systemctl status nginx

keepalived默认启动nginx服务。

在这里插入图片描述

在浏览器中访问 192.168.25.222

在这里插入图片描述

windows系统下的dos命令里执行如下命令, 访问物理主机的物理地址

arp -a 192.168.25.222

在这里插入图片描述

在192.168.25.12中执行ip addr

在这里插入图片描述

在192.168.25.10中执行ip addr

在这里插入图片描述

可以看到现在访问的是nginx服务器或者keepalived是192.168.25.12的

现在模拟192.168.25.12挂了,是否能切换到192.168.25.10。
关闭keepalived服务
关闭nginx服务

[root@localhost opt]# systemctl stop keepalived
[root@localhost opt]# systemctl stop nginx

在这里插入图片描述

现在切换到了192.168.25.10

高可用就配置好了

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值