Linux下Nginx的入门学习记录

前言

前两篇文章已经把环境等都安装完了。

反向代理demo1

进入tomcat/webapps
新建java文件夹,里面放入一个html
访问效果
http://192.168.21.129:8080/java/index.html

一般情况下都是直接访问域名+路径,没有端口号的。这就该nginx上场了
修改nginx配置
进入conf文件夹

vi nginx.conf
    server {
        listen       80;
        server_name  localhost;
        location / {
               proxy_pass http://127.0.0.1:8080;
        }

然后重启nginx

./nginx -s reload

访问http://192.168.21.129/java/index.html
完美实现!

反向代理demo2

复制一个tomcat,然后修改端口为8081

cp -r tomcat tomcat8081

修改tomcat8081的端口,进入conf文件夹

vi server.xml

直接输入/8080搜索
将8080 修改为8081

关闭端口 8005 修改为 8006.

修改一下此tomcat/webapps的文件
将之前的java/inde.html,修改为gmaya,内容也修改一下,用于区别。
访问不了,不要忘记开启8081端口哟
最终为:
http://192.168.21.129:8080/java/index.html
http://192.168.21.129:8081/gmaya/index.html

修改nginx配置

重启,访问看效果

Nginx 配置-负载均衡

修改配置

还是上面的两个tomcat,直接修改nginx

http {
    upstream myserver {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myserver;
        }
    }
}

默认轮询的方式,每次打开新窗口,8080和8081会交替出现。
提示:修改webapps/ROOR下index文件会看的效果更明显

Nginx 分配策略:

  1. 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
  2. 权重,默认1,权重越高被分配的客户端越多 指定轮询几率,weight 和访问比率成正比。比如一台服务器性能好,一台不好,那就分配性能好的多一点
  3. ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
  4. fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

Nginx 高可用

tomcat搞了多个,也就是咱们web服务器搞了集群,不用担心某个tomcat挂了。
但是现在只有一台Nginx,如果Nginx挂了,也是gg
所以我们需要两台以上Nginx来实现故障转移和高可用。

keepalived简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

安装keepalived

yum install keepalived -y

查看网卡ifconfig
如果ifconfig使用不了

yum install net-tools


CentOS7里面的网卡名称默认不再是eth0,而是ens33

我没有那么多服务器,所以我是使用的虚拟机。做到这一步,然后克隆一个一模一样的。
一个主机为:192.168.21.129
一个从机为:192.168.21.130

修改主从keepalived配置

主机
#主机
#检测脚本
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为从
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 52    # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.21.133            # 定义虚拟ip(VIP),可多设,每行一个
    }
}
从机
#从机
#检测脚本
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state BACKUP            # 指定keepalived的角色,MASTER为主,BACKUP为从
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 52    # 虚拟路由编号,主从要一直
    priority 99            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.21.133           # 定义虚拟ip(VIP),可多设,每行一个
    }
}
检测nginx脚本

在/usr/local/src/check_nginx.sh路径创建

#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx
      systemctl start nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived
      fi
fi

修改文件访问权限

chmod 775 check_nginx.sh

启动主从tomcat,nginx
启动主从keepalived

systemctl start keepalived.service

重启keepalived命令

service keepalived restart
问题

如果启动http://192.168.21.133/ 发现访问不了,可能影响的原因有

  1. 默认的global_defs配置中 ,将vrrp_strict注释!
  2. 定义的virtual_ipaddress虚拟ip,要和自己本身的虚拟机ip段一样,比如:我的虚拟机ip为:
    http://192.168.21.130/ ,http://192.168.21.129/ ; 那么我的虚拟ip 也在http://192.168.21.*/ 范围内,我刚开始配置的192.168.200.100,就一直ping不通,改成192.168.21.133,解决。
  3. virtual_router_id 默认的是51, 可以修改成52,然后重启一下看看。
  4. priority 主从的优先级不一样。
测试

现在已经能通过虚拟ip访问了, 现在直接把主机关闭。
再次访问,发现还是可以访问。说明咱们的高可用ok了。

如果发现检测nginx脚本,中的启动命令不能够直接启动Nginx,所以还要把自己服务器上的
systemctl start nginx 配置一下。

Nginx优化

Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求

调整worker_processes

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

默认:worker_processes: 1
调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)

最大化worker_connections

worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。
数字越大,能同时处理的连接越多

默认:worker_connections: 1024
调大:worker_connections: 100000,(调大到10万连接)

connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操作系统级别的“进程最大可打开文件数”。
具体可以翻阅资料查看。不再絮叨了。

启用Gzip压缩

压缩文件大小,减少了客户端http的传输带宽,因此提高了页面加载速度

为静态文件启用缓存

根据具体情况区别要不要开启

禁用access_logs

访问日志记录,它记录每个nginx请求,因此消耗了大量CPU资源,从而降低了nginx性能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值