nginx基础入门

一、基础概念

  1. nginx:高性能的HTTP和反向代理服务器、支持热部署高并发反向代理负载均衡动静分离
  2. 正向代理:客户端配置一个代理服务器,从而直接访问浏览器,这种方式即称为正向代理。
  3. 反向代理:客户端访问代理服务器,代理服务器直接去目标服务器访问获取数据后,访问给客户端。即客户端间接访问目标服务器,这种方式称为反向代理。
  4. 负载均衡:将集中访问单个服务器的请求,分发到不同的服务器上,即负载均衡。
  5. 动静分离:将动态资源(如jsp/servlet)和静态资源(css、htms、js)分开部署,即为动静分离。
  6. 简单架构图:
    在这里插入图片描述

二、nginx安装、常用命令和配置文件

参考https://blog.csdn.net/weixin_40496191/article/details/121028500

三、常用命令

  1. 查看版本:./nginx -v
  2. 启动:./nginx
  3. 关闭:./nginx -s stop
  4. 重新加载:./nginx -s reload

四、nginx配置文件

  1. 查看配置文件路径: whereis nginx.conf -->/usr/local/nginx/conf
  2. nginx的配置文件组成
    (1)全局块:nginx运行的配置参数,如并发量worker_processes
    (2)events块:nginx与用户的网络连接,如支持的连接数worker_connections
    (3)http块:文件引入、MINE-TYPE定义、日志自定义、连接超时时间、单链接请求上限等
    ​(4)server块:一个http块可以有多个server块,每个server相当于同一台虚拟主机。

五、nginx配置反向代理

  1. 准备一个简单的springboot项目并且部署,默认端口8081。推荐使用docker,因为不需要配置环境变量。可参考:https://blog.csdn.net/weixin_40496191/article/details/122714245
  2. 简单配置反向代理,将请求80端口地址做一个转发(ip:192.168.248.10)
    在这里插入图片描述
    访问:http://192.168.248.10:80
    结果:http://192.168.248.10:8081
  3. 实现端口不同路径,转发不同地址
    在这里插入图片描述
    访问:http://192.168.248.10:801/test01/index/index、http://192.168.248.10:801/test02/index/index
    结果:http://192.168.248.10:8081/index/index、http://192.168.248.10:8082/index/index
  4. 地址匹配分析(80端口)
location  /js/ {
proxy_pass 192.168.248.10:8081/;
}
访问:http://192.168.248.10:80/js/index
结果:http://192.168.248.10:8081/index
location  /js/ {
proxy_pass 192.168.248.10:8081;
}
访问:http://192.168.248.10:80/js/index
结果:http://192.168.248.10:8081/js/index
location  /js/ {
proxy_pass 192.168.248.10:8081/js/;
}
访问:http://192.168.248.10:80/js/index
结果:http://192.168.248.10:8081/js/index
location  /js/ {
proxy_pass 192.168.248.10:8081/js;
}
访问:http://192.168.248.10:80/js/index
结果:http://192.168.248.10:8081/jsindex

六、nginx配置负载均衡

  1. 配置
    在这里插入图片描述
    访问:http://192.168.248.10:80/index/index
    结果:http://192.168.248.10:8081/index/index、http://192.168.248.10:8082/index/index轮询
  2. 分配服务器策略
    (1)简单轮询(默认):即轮流平均分配,某个服务宕机,则自动剔除。如上
    (2)balance权重:即可以自己配置每台服务器的分配权重,即效率性能好的服务器分配的权重越高,则被访问的次数也会越多在这里插入图片描述
    (3)ip_hash方式:每个请求按照ip分配,即每个ip只会固定的访问一个后端服务,可以解决session问题。
    在这里插入图片描述
    (4)upstream-fair方式:按照时间响应长短的方式进行分配,响应时间越短,则分配越多。(未调通,尴尬)
    在这里插入图片描述
    (5)url_hash方式:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。(未调通,尴尬)
    在这里插入图片描述

六、nginx配置动静分离

  1. 静态文件配置:新建文件夹mkdir /data/js,然后放入jquery.min.js,配置文件
    在这里插入图片描述
    访问:http://192.168.248.10:803/js/jquery.min.js
    结果:http://192.168.248.10:803/data/js/jquery.min.js
  2. 动静分离实例:正常我们会将静态资源后缀的文件统一进行转发,如下
    在这里插入图片描述
    访问:http://192.168.248.10:804/jquery.min.js
    结果:http://192.168.248.10:804/data/js/jquery.min.js
  3. 静态文件下载(可用于不上传只下载的附件)
    location /upload {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
            try_files $uri $uri/ /index.html;
            root   /file/;
            index  index.html index.htm;
        }

下载实例:http://192.168.248.10:804/upload/file/下载文件

七、nginx配置高可用集群

ps:这种集群方式不建议话太多时间学习。因为集群有成熟的技术栈,如NacosEurekaZookeep等。
在这里插入图片描述

  1. 准备两台虚拟机:直接克隆第一台虚拟机 (192.168.248.10,192.168.248.11
  2. 两台虚拟机都安装keepalived:yum install keepalived -y。
  3. 验证:rpm -q -a keepalived监测是否成功安装
    在这里插入图片描述
  4. 修改配置: vi /etc/keepalived/keepalived.conf
    主服务器:
! Configuration File for keepalived

#全局定义
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL10
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx
{
    script "/etc/keepalived/keepalived_check.sh"
    interval 3 #监测脚本时间间隔
    weight -20

}

#虚拟ip配置
vrrp_instance VI_1 {
    state MASTER #//主备配置为MASTER----BACKUP
    interface ens33 #网卡eth0
    virtual_router_id 51 #主备的virtual_router_id必须相同
    priority 100 #主备取不同优先级,主比备大
    advert_int 1  #主服务器组播包发送间隔时间
    authentication { #主备主机之间的认证表示信息
        auth_type PASS
        auth_pass 1111
    }
   track_script {
        check_nginx        #监控脚本
   }

    virtual_ipaddress { #设置虚拟ip地址信息
        192.168.248.100
    }
}
}

从服务器:

! Configuration File for keepalived

#全局定义
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL11
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx
{
    script "/etc/keepalived/keepalived_check.sh"
    interval 3 #监测脚本时间间隔
    weight -20

}

#虚拟ip配置
vrrp_instance VI_1 {
    state BACKUP #//主备配置为MASTER----BACKUP
    interface ens33 #网卡eth0
    virtual_router_id 51 #主备的virtual_router_id必须相同
    priority 90 #主备取不同优先级,主比备大
    advert_int 1  #主服务器组播包发送间隔时间
    authentication { #主备主机之间的认证表示信息
        auth_type PASS
        auth_pass 1111
    }
   track_script {
        check_nginx        #监控脚本
   }

    virtual_ipaddress { #设置虚拟ip地址信息
        192.168.248.100
    }
}

}

keepalived_check.sh脚本

#! /bin/bash
# 统计nginx 进程是否存在
A=`ps -C nginx --no-header|wc -l`
# 为0 表示nginx 停止来
if [ $A -eq 0 ];then
    # 尝试重启nginx
    /usr/local/nginx/sbin/nginx
	sleep 1
    # nginx 重启失败,则keepalived自杀,进行vip转移
	
	A=`ps -C nginx --no-header|wc -l`
	# 为0 表示nginx 停止来
	if [ $A -eq 0 ];then
        # 杀死keepalived,vip转移到另一台机器
        killall keepalived
    fi
fi
  1. keepalived_check.sh脚本放入/etc/keepalived/目录下,添加权限: chmod u+x keepalived_check.sh
    ps:如果是window编辑的脚本,需要处理下,否则会报错–>坏的解释器: 没有那个文件或目录
    处理:sed -i 's/\r$//' keepalived_check.sh(两台都要)
  2. 启动nginxkeppalivedcd /usr/local/nginx/sbin --> ./nginx --> systemctl start keepalived.service(两台都要)
  3. 查看主服务器:ip a。(192.168.248.10
    在这里插入图片描述
  4. 访问虚拟ip:http://192.168.248.100:802/index/index
    在这里插入图片描述
  5. 停止主服务器的nginx:cd /usr/local/nginx/sbin --> ./nginx stop
  6. 查看从服务器:ip a192.168.248.11
    在这里插入图片描述
  7. 访问虚拟ip:http://192.168.248.100:802/index/index成功
    在这里插入图片描述
  8. 恢复主服务器的nginx,则虚拟ip将会跳回到主服务器。
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值