从零开始入门Nginx

最近在腾讯云租了个小霸王服务器,本来想把自己写的博客传上去,奈何我太菜搞不了,所以为了不让服务器发霉 ,正好学一下Nginx

一、简介

1、反向代理
(1)正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
在这里插入图片描述
在这里插入图片描述
(2)反向代理
在这里插入图片描述在这里插入图片描述
2、负载均衡
(1)单一服务器
缺点:随着信息增长、访问量和数据量的提升以及系统业务的复杂度增加,会造成服务器响应客户端的请求缓慢,并发量大时可能会造成服务器直接崩溃
在这里插入图片描述
(2)负载均衡
增加服务器的数量,将请求分发到各个服务器上,将原来请求集中到单个服务器上的情况改为分发到多个服务器上,将负载分发到不同的服务器
在这里插入图片描述
3、动静分离
在这里插入图片描述在这里插入图片描述

二、Nginx的常用命令

使用nginx操作命令前提条件:必须进入nginx的目录中==(/usr/local/nginx/sbin)==
命令:

  1. 查看nginx版本号
    ./nginx -v

  2. 启动nginx
    ./nginx

  3. 关闭nginx
    ./nginx -s stop

  4. 重新加载nginx
    ./nginx -s reload
    修改nginx.conf文件后,需要重新加载nginx,配置文件才会生效

三、Nginx的配置文件

1、配置文件位置/usr/local/nginx/conf/nginx.conf

2、nginx配置文件组成

#去掉注释的精简版本,原版中有许多注释
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

nginx配置文件由三部分组成

  1. 第一部分:全局块

    从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器真题运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成的worker process数、进程PID存放路径、日志存放路径和类型以及配置文件的引入等,大部分默认被注释掉

#这是Nginx服务器并发处理服务的关键,worker process的值越大,可以支持的并发数量也越多,但是会受到硬件、软件等设备的制约
worker_processes  1;
  1. 第二部分:events块

    涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker press下的网络连接进行序列化,是否允许同时接受多个网络连接,选取哪种事件驱动模型来处理连接请求,每个worker press可以同时支持的最大连接数等
    这部分配置对Nginx的性能影响较大,应根据不同情况采取不同配置

#这个例子表示每个worker press支持的最大连接数为1024
events {
    worker_connections  1024;
}
  1. 第三部分:HTTP块

    这算是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里
    需要注意:http块也可以包括http全局块、server块
    ①http全局块
    http全局块配置的指令包括文件引入、MIME-TYPE的定义、日志自定义、连接超时时间、单链接请求数上限等
    ②server块
    这块和虚拟主机有密切关系

    每个http块可以包括多个server块,每个server块相当于一个虚拟主机
    每个server块也可以分为全局server块,以及可以同时包含多个的location块

    在这里插入图片描述

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;  #监听端口号
        server_name  localhost;  #主机名称

        location / {  
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

四、配置反向代理

实例一
实现效果:代开浏览器,在地址栏中输入www.123.com,跳转到Linux系统tomcat主页面

1、准备工作
(1)安装tomcat,使用默认端口8080
(2)对外开放访问端口
firewall-cmd --add-port=8080/tcp --permanent
重新加载防火墙设置
firewall-cmd -reload
查看已经开放的端口号
firewall-cmd --list-all
(3)地址栏输入 ip地址:8080 测试是否能进入tomcat主页

访问过程分析:
在这里插入图片描述
2、具体配置

  1. 在Windows系统的host文件进行域名和ip对应关系的配置(不要问我为什么是Windows,因为我买不起别的系统的电脑)
    在这里插入图片描述在host文件中添加一行:ip地址 域名
    例如:129.204.18.121 www.123.com

  2. 在nginx进行请求转发的配置(反向代理配置)
    在这里插入图片描述
    注:进入之后按先按a,之后才能进行编辑,退出时先按esc,之后使用 :wq 命令保存并退出

  3. 最终测试
    启动nginx,输出www.123.com,正常情况下跳转到tomcat主页面
    在这里插入图片描述

实例二
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
nginx监听端口为9001
访问http://129.204.18.121:9001/edu/直接跳转到127.0.0.1:8080
访问http://129.204.18.121:9001/vod/直接跳转到127.0.0.1:8081
1、准备工作

  1. 准备两个tomcat服务器,端口为8080、8081
    在端口为8081的tomcat中修改默认端口为8081

  2. 创建文件夹和测试页面
    在这里插入图片描述在这里插入图片描述8080同理

2、具体配置

  1. 找到nginx的配置文件,在里面进行反向代理的配置
    在这里插入图片描述
    注:修改完配置文件不要忘记重启或者重新加载nginx服务器

  2. 开放对外端口号9001,8080,8081

  3. 最终测试
    在这里插入图片描述在这里插入图片描述

location指令说明
在这里插入图片描述
注:如果uri包含正则表达式,则必须要有在这里插入图片描述

五、配置负载均衡

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

1、准备工作
(1)准备两台tomcat服务器,一台8080,一台8081
(2)在两台tomcat里面的webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html,用于测试在这里插入图片描述

2、具体配置

  1. 在nginx.conf配置文件中进行修改
    在这里插入图片描述
    在这里插入图片描述

  2. 重启nginx

  3. 最终测试
    在这里插入图片描述在这里插入图片描述
    将我们的请求平均分配到了每个页面
    注:第一次进入时,随机进入这两个页面中的一个,之后每次刷新都会进入另一个页面

3、Nginx中的负载均衡分配方式(策略)

  1. 轮询(默认配置)
    每次请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
  2. weight
    weight代表权重,默认为1,权重越高分配的客户越多
    在这里插入图片描述
  3. ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题(比如保存到session的用户名密码)
    如果你第一次访问到8080,那么以后都会访问8080,8081同
    在这里插入图片描述
  4. fair(第三方)
    按照后端服务器的响应时间来分配请求,响应时间短的优先分配
    在这里插入图片描述

六、配置动静分离

在这里插入图片描述

1、准备工作
在Linux系统中准备静态资源,用于进行访问
在这里插入图片描述在www放一个html页面,在image中放一张图片

2、具体配置

  1. 在nginx.conf文件中进行配置
    在这里插入图片描述

  2. 重启nginx

  3. 最终测试
    在这里插入图片描述在这里插入图片描述

七、配置高可用的集群

1、什么是Nginx的高可用
问题:nginx服务器宕机导致请求无法转发
在这里插入图片描述
高可用:准备两个nginx服务器,当主服务器宕机时,切换到备份nginx服务器作为主服务器继续工作。还需要对外设置一个虚拟ip,同时将虚拟ip绑定到两台nginx服务器中,通过keepalived进行检测,访问时都是通过虚拟ip进行访问

keepalived:相当于一个路由,里面会有脚本检测当前nginx服务器是否还活着,如果活着就进行访问,如果宕机了就切换到备份服务器
在这里插入图片描述
2、配置高可用的准备工作
(1)需要两个nginx服务器
(2)在两台服务器上安装keepalived,可使用yum命令进行安装
yum install keepalived -y

3、配置高可用

  1. 修改主服务器和备份服务器的keepalived.conf配置文件
#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from miaoruntu@itcast.cn  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
    script "/usr/local/src/nginx_check.sh"         ##监控脚本,需要自己配置
    interval 2                                      ##检测脚本执行的时间间隔,2秒
    weight 2                                        ##权重+2,脚本执行成功后,使备份服务器权重大于主服务器权重
}
vrrp_instance VI_1 {
    state MASTER           #标示状态 主机为为MASTER 备份机为BACKUP
    interface docker0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #优先级,MASTER权重要高于BACKUP 比如BACKUP为99
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
   track_script {
        check_nginx        #监控脚本
   }
    virtual_ipaddress {    #设置vip
        192.168.17.50       #可以多个虚拟IP,换行即可
    }

}
  1. 在/usr/local/src/下添加nginx_check.sh脚本
#!/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启动
    启动nginx:./nginx
    启动keepalived:systemctl start keepalived.service

  2. 最终测试
    (1)浏览器地址栏输入虚拟ip地址 192.168.17.50 进行访问
    (2)把主服务器的nginx和keepalived停止,再输入虚拟ip地址 192.168.17.50 进行访问
    停止keepalived:stop keepalived.service
    在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值