Nginx教程

Nginx学习笔记

本文主要是介绍Nginx学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、安装Nginx

1:去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本。

2:上传nginx到linux系统

3:安装依赖环境

        (1)安装gcc环境

        yum install gcc-c++

        (2)安装PCRE库,用于解析正则表达式

        yum install -y pcre pcre-devel

        (3)zlib压缩和解压缩依赖

        yum install -y zlib zlib-devel

        (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

        yum install -y openssl openssl-devel

4. 解压,需要注意,解压后得到的是源码,源码需要编译后才能安装

        tar -zxvf nginx-1.16.1.tar.gz

5. 编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

        mkdir /var/temp/nginx -p

6. 在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件

./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi

7. make编译

        make

8. 安装

        make install

9. 进入sbin目录启动nginx

        ./nginx

       停止:./nginx -s stop

       重新加载:./nginx -s reload

10. 打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功

注意事项:

1. 如果在云服务器安装,需要开启默认的nginx端口:80

2. 如果在虚拟机安装,需要关闭防火墙

3. 本地win或mac需要关闭防火墙

2、Nginx的Location匹配规则

1. location分为正则和非正则。

        ~和~*为正则location;=、^~、@和无任何前缀的都属于普通location

2.官网描述的匹配顺序

        1.先普通,再正则。
        2.普通location之间的匹配顺序:按最大前缀匹配。
   如location /a/{},location /a/b/ {},请求 http://a/b/c.html 匹配的是location /a/b/ {}。
        3.正则location之间的匹配顺序:按配置文件中的物理顺序匹配,只要匹配到一条正则,就不再考虑后面的
        4.普通location与正则location之间的匹配结果选择:
普通location先匹配,匹配到了结果,只是一个临时结果;会继续正则location的匹配,如果匹配到正则,则用匹配到的正则结果;如果没有匹配到正则,则继续用普通匹配的那个结果

综上,常规的顺序是匹配完普通location,还要继续匹配正则location,但是,也可以告诉nginx,匹配到了普通location,就不要再搜索匹配正则location了,通过在普通location前面加上^~符号,^表示非,~表示正则,^~就是表示不要继续匹配正则。

除了^~,=也可阻止nginx继续匹配正则,区别在于^~依然遵循最大前缀匹配规则,而=是严格匹配。

3、Nginx 日志切割

        现有的日志都会存在 access.log 文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把 文件切割为多份不同的小文件作为日志,切割规则可以以 天 为单位,如果每天有几百G或者几个T的日志的话,则可以按需以 每半天 或者 每小时 对日志切割。

具体步骤如下:

        手动方式切割:

        1. 创建一个shell可执行文件: cut_my_log.sh ,内容为:

                #!/bin/bash

                LOG_PATH="/var/log/nginx/"

                RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)

                PID=/var/run/nginx/nginx.pid

                mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log

                mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

                #向Nginx主进程发送信号,用于重新打开日志文件

                kill -USR1 `cat $PID`

        2. 为 cut_my_log.sh 添加可执行的权限: chmod +x cut_my_log.sh

        3. 测试日志切割后的结果: ./cut_my_log.sh

                使用定时任务:

                1. 安装定时任务: yum install crontabs

                2. crontab -e 编辑并且添加一行新的任务:

                        */1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

                3. 重启定时任务: service crond restart

4、Nginx 跨域配置支持

        #允许跨域请求的域,*代表所有

                add_header 'Access-Control-Allow-Origin' *;

        #允许带上cookie请求

                add_header 'Access-Control-Allow-Credentials' 'true';

        #允许请求的方法,比如 GET/POST/PUT/DELETE

                add_header 'Access-Control-Allow-Methods' *;

        #允许请求的header

                add_header 'Access-Control-Allow-Headers' *;

5、Nginx 负载均衡详解

        可以参考一下这篇文章:

Nginx搭建负载均衡集群 - 苦逼运维 - 博客园(1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策https://www.cnblogs.com/diantong/p/11208508.html

6、Nginx 配置keepalived双机主备

        1.解压keepalived压缩包

                tar -zxvf keepalived-2.0.18.tar.gz

        2.在keepalived目录,输入如下命令进行配置

                ./configure --prefix=/usr/local/keepalived --sysconf=/etc

                配置时报警告:

                Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS

                解决方法:

        yum -y install libnl libnl-devel

                yum install -y libnfnetlink-devel

          3.重新执行步骤2

          4.安装keepalived

                make && make install

          5.查看keepalived安装目录

                whereis keepalived

                如下图所示:

                

        6.进入/etc/keepalived,修改vi keepalived.conf

修改为下面内容:

global_defs {
   router_id keep_132 #节点标识符,全局唯一
}

vrrp_instance VI_1 {
    state BACKUP #主节点为MASTER 备用节点BACKUP
    interface ens33 #当前机器网卡名称
    virtual_router_id 51 #保证主备一致,目前默认51
    priority 80 #优先级,权重。权重越高,MASTER挂掉后,就能成为MASTER
    advert_int 1 #主备之间同步检查时间间隔,默认1秒
    authentication { #认证授权用户名和密码,防止非法节点进入。目前使用默认
        auth_type PASS
        auth_pass 1111
    }
    #虚拟ip
    virtual_ipaddress {
        192.168.32.133
    }
}

备注:需要修改的地方已经标成红色

验证是否配置成功:

        1.启动keepalived

                进入keepalived安装目录,输入命令  ./keepalived

        2.查看虚拟IP是否绑定成功

                输入 ip addr 命令查看ip

              

        3.访问虚拟IP

使用配置的虚拟ip能正常访问,验证成功。

        4.配置keepalived为系统服务,进入keepalived源文件目录。

                cp init.d/keepalived /etc/init.d/

7、keepalived 配置Nginx自动重启

        当nginx服务挂掉之后,keepalived服务正常运行的情况下,通过虚拟IP访问,页面会报错,并不会跳转到备用Nginx服务上去,所以一般使用keepalived执行脚本让Nginx自动重启,如果重启失败,停止本机keepalived服务,这时请求就会跳转到备用nginx服务上了。

        1.编写重启脚本文件

        vim /etc/keepalived/check_nginx_alive_or_not.sh

        内容如下:

        #!/bin/bash

        A=`ps -C nginx --no-header |wc -l`

        # 判断nginx是否宕机,如果宕机了,尝试重启

        if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx  #这个目录文件为nginx启动文件

        # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机

        sleep 3

                if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

                        killall keepalived

                fi

        fi

        2.给文件增加权限

        chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

        3.配置keepalived监听nginx脚本:

        vrrp_script check_nginx_alive {

                script "/etc/keepalived/check_nginx_alive_or_not.sh"

                interval 2 # 每隔两秒运行上一行脚本

                weight 10 # 如果脚本运行失败,则升级权重+10

        }

        4.在 vrrp_instance 中新增监控的脚本(重要)

               track_script {

                check_nginx_alive # 追踪 nginx 脚本

                }

                

 

        5.重启Keepalived使得配置文件生效

                systemctl restart keepalived

        6.验证结果:

                当手动关闭nginx服务后使用虚拟IP访问如果还能正常访问,那么验证通过。

6、keepalived 配置Nginx双主热备

        如果配置keepalived双机热备,如果MASTER节点不出问题,BACKUP节点就不会工作,就会有一个资源浪费的问题。所以引出keepalived配置Nginx双主热备方案。一句话总结:两台主机,互相是对方的备份机(BACKUP节点),又互相是对方的主机(MASTER节点)。

        配置步骤:

                1.复制keepalived配置文件中实例。参考如下:       

vrrp_instance VI_2 {
    state MASTER 
    interface ens33
    virtual_router_id 52 虚拟路由,主备节点必须一致
    priority 100  #主节点比备用节点数值大
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.32.10 #虚拟IP
    }
}
备注:需要修改的地方已经使用红色标注

        

                

                

        

这篇关于Nginx学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!