2021-08-02~2021-08-06总结(Nginx基础)

本文详细介绍了Nginx的功能,包括反向代理、负载均衡和动静分离的原理及配置实例。重点讲述了反向代理的两种类型,以及如何通过Nginx实现负载均衡的四种策略。此外,还探讨了Nginx的高可用集群配置,利用keepalived实现主备切换。最后,文章提到了worker进程的工作机制和配置worker数量的考量,以及Nginx的热部署和并发能力。
摘要由CSDN通过智能技术生成

工作总结

前言

本周学习nginx的基础·。

技术探索

1.Nginx功能介绍
1.1 Nginx简介

Nginx是一个高性能的HTTP和反向代理web服务器。它专为性能优化开发而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载(有报告表明:其能支持高达5w个并发连接数)
优点:占有内存小,并发能力强。支持热部署,及时运行多月也不用重新启动,可以在不间断服务的情况下,对软件进行升级

1.2 反向代理
1.2.1 正向代理

在这里插入图片描述

1.2.2 反向代理

客户端对反向代理是没有感知的,客户端在访问过程中并不用添加任何的配置。客户端通过向反向代理服务器发送请求,由反向代理服务器去选择目标服务器获取数据,然后返回给客户端。(代理服务器与目标服务器就是同一个服务器,暴露的是代理服务器地址,真是的服务器IP被隐藏)
在这里插入图片描述

1.3 负载均衡

单个服务器解决不了的问题,我们就增加服务器的数量。然后将请求分发到各个服务器上,将负载按照配置分发到不同的服务器,也就是我们所说的负载均衡。
在这里插入图片描述

1.4 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力。
在这里插入图片描述

2.Nginx使用
2.1 Nginx安装

可阅读我在学习过程中总结的linux安装nginx的教程

2.2 常用命令
  1. 使用nginx的操作命令时:应当先进入nginx的目录(/usr/local/nginx/sbin)
  2. 查看nginx版本号
[root@hadoop1 sbin]# ./nginx -v
nginx version: nginx/1.12.2
  1. 启动nginx
[root@hadoop1 sbin]# ./nginx
[root@hadoop1 sbin]# ps -ef | grep nginx
root      74714      1  0 17:45 ?        00:00:00 nginx: master process ./nginx
nobody    74715  74714  0 17:45 ?        00:00:00 nginx: worker process
root      74717  12658  0 17:45 pts/0    00:00:00 grep --color=auto nginx
  1. 关闭nginx
[root@hadoop1 sbin]# ./nginx -s stop
[root@hadoop1 sbin]# ps -ef | grep nginx
root      74704  12658  0 17:44 pts/0    00:00:00 grep --color=auto nginx
  1. 重新加载nginx
[root@hadoop1 sbin]# ./nginx -s reload
2.3 配置文件
  • 文件位置
cd /usr/local/nginx/conf
  • 配置文件组成
  1. 全局快
    从配置文件开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令
    在这里插入图片描述

例如:

worker_processes  1;    #值越大,可以支持并发的量也越多
  1. events块
    这块涉及的指令主要影响nginx服务器与用户的网络连接
    在这里插入图片描述
    例如:
worker_connections  1024;   #nginx支持的最大连接数
  1. http块
    包含:http全局块 server块
http {
	#http全局块
    server {
		#server块
        }
    }
}
3.配置实例
3.1 反向代理实例一

在这里插入图片描述

  1. 在liunx安装tomcat
    将tomcat安装包放入linux系统钟,然后进行解压。
    到bin目录钟启动tomcat
./startup.sh
firewall-cmd --add-port=8080/tcp --permanent #打来8080端口
  1. 修改本机的host配置
    在这里插入图片描述
  2. 配置nginx并启动
    在这里插入图片描述
  3. 结果
    在这里插入图片描述
3.2 反向代理实例二
  1. 在liunx安装两个tomcat
  2. 配置nginx
    在这里插入图片描述
  3. 结果
    在这里插入图片描述
    在这里插入图片描述
3.3 负载均衡

负载均衡分配服务器的策略:
1.轮询(默认策略):每个请求按照时间顺序分配,如果某个服务器挂了,就自动剔除。
2.weight(权重策略):权重越高的被分配的越多
3. ip_hash:直接在upstream中书写ip_hash;每个请求按访问ip的hash结果分配。每个访客固定访问一个后端服务器,可以解决session问题
4. fair(第三方):直接在upstream中书写fair;按后端服务器的响应时间分配响应时间越短优先分配
实例

  1. 在liunx安装两个tomcat
  2. 配置nginx配置文件
http {
    upstream myserver{
        server: 192.168.183.129:8080;
        server: 192.168.183.129:8081;
    }
    server {
        listen       80;
        server_name  192.168.183.129;
        location / {
            root   html;
            proxy_pass  http://myserver;
            index  index.html index.htm;
        }
 }
3.4 动静分离

通过location指定不同的后缀名实现不同的请求转发。通过expires(写在laction中)参数设置,可以使浏览器缓存过期时间。(具体expires定义:是给一个资源设置一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是都过期即可。这种方法很适合不经常变动的资源。例如我们在这里设置一个3d,表示这三天内访问这个url,发送一个请求,对比服务器的资源是否有变化,则不会从服务器抓取,返回状态码304,如果有修改则会重新下载返回状态码200)

  1. 将静态文件存放到 /usr/data/的不同文件夹中
  2. 配置nginx
        location /www/ {
            root /usr/data/; #静态文件路径
            index  index.html index.htm;
        }
        location /image/{
           root /usr/data/; #静态文件路径
           autoindex on;
        }
  1. 结果
    在这里插入图片描述

在这里插入图片描述

3.5 高可用集群

在这里插入图片描述
安装keepalived命令

yum install keepalived -y

操作过程(以下操作针对两台服务器)

  1. 配置keepalived文件
cd /etc/keepalived/
vi keepalivec.conf 
  1. 配置文件内容
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 #ip地址
} 
  
vrrp_script chk_http_port { #检测脚本以及权重的参数
  
   script "/usr/local/src/nginx_check.sh" 
     interval 2      #(检测脚本执行的间隔) 
     weight 2 
  
} 

#虚拟ip的配置
vrrp_instance VI_1 {     state BACKUP   # 备份服务器上将 MASTER 改为 BACKUP       interface ens33  //网卡     virtual_router_id 51   # 主、备机的 virtual_router_id 必须相同     priority 90     # 主、备机取不同的优先级,主机值较大,备份机值较小 
    advert_int 1 
authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress {         192.168.17.50 // VRRP H 虚拟地址 
    } 
} 
  1. 配置校验文件
#!/bin/bash 
A=`ps -C nginx –no-header |wc -l` 
if [ $A -eq 0 ];then     
	/usr/local/nginx/sbin/nginx     #nginx的启动路劲  
	sleep 2     
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then         
		killall keepalived     
	fi 
fi 
  1. 启动nginx跟keepalived
systemctl start keepalived.service #启动keepalived
location指令说明

用于匹配url,语法如下:

location [ = | ~ | ~* | ^~] url {

}
  1. = :用于不包含正则表达式的url前,要求请求字符串与url严格匹配,如果匹配成功,就停止继续向下搜索并立即处理请求
  2. ~ :用于表示url包含正则表达式,并且区分大小写。
  3. ~* :用于表示url包含正则表达式,并且不区分大小写。
  4. ^~ : 用于不含正则表达式的url前,要求nginx服务器找到标识url和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则url和请求字符串做匹配。
    注意:如果url包含正则表达式,则必须要有~ 或者~*标识
1.Nginx原理
  1. master进程worker进程
    在这里插入图片描述
    在这里插入图片描述
  2. worker如何工作
    worker采用争抢的机制
  3. 一个master多个worker的好处
  • 可以使用nginx -s reload 热部署,利于nginx做热部署(对于没有任务的work先做部署,从而实现热部署的效果)
  • 每个worker 都是独立的进程,不需要加锁,节省锁的开销,其次采用独立的进程,各个work之间互不影响,有worker经常退出后,服务不会中断。而master经常会重新启动新的进程。
  1. 设置多少个worker合适
    每个worker线程都可以把一个cpu的性能发挥到极致,所以worker的数量跟服务器的cpu数量相等最为适宜
  2. 连接数 work_connection
  • 一个请求,占用worker的几个链接数? 2/4个
    静态资源:worker 1.接收请求2.指向静态资源服务器(所以是两个)
    如果需要访问tomcat:1.worker接收请求 2.访问tomcat 3.接收tomcat的返回 4.返回客户端 (所以是四个)
  • nginx有一个master,有4个work,每个work支持的最大连接数1024,支持最大并发量是多少
    普通静态访问最大并发:worker最大连接数*worker个数/2
    http作为反向代理的话,最大并发:worker最大连接数*worker个数/4

总结

1、之前对于nginx比较默认在配置的时候都是查资料并没有系统的学习一遍,所以本周就对nginx进行系统的学习虽然还不够深刻但是也是收益良多。
2、后续应该对nginx在更多情境下的配置进行学习。

踏实学习,不骄不躁--zwx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值