Nginx从入门到入土

linux下安装nginx

1、下载压缩包

2、安装依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

3、将压缩包移动到 /usr/local/目录下解压并进入根目录
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9

4、安装
./configure –prefix=/usr/local/nginx
make
make install

5、开启防火墙需要放行的端口
firewall-cmd –list-all 查看开放的端口
sudo firewall-cmd –add-port=80/tcp –permanent 开启防火墙80端口
firewall-cmd –reload 重启防火墙

6、常见操作
cd /usr/local/nginx/sbin
./nginx -v 查看版本
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启(重新加载)

7、配置高可用
需要两台服务器分别安装nginx,一台主nginx一台辅nginx。当主nginx宕机时辅nginx启动工作。
用户通过一个虚拟ip对nginx进行访问(需要安装keepalived)
yum install keepalived -y 安装keepalived
cd /etc/keepalived 进入安装目录
vim keepalived.conf 修改配置

    #心跳检查脚本设置
    vrrp_script chk_nginx {
        script "/etc/keepalived/check_nginx.sh"     # 心跳检测角本路径
        interval 2             #脚本执行间隔,每2s检测一次
        weight -5           #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
        fall 3                 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
        rise 2                 #检测1次成功就算成功。但不修改优先级
    }

    #主备设置
    vrrp_instance VI_1 {
        state MASTER|BACKUP           # MASTER为主机,BACKUP为辅机
        virtual_router_id num        #虚拟路由标识,MASTER和BACKUP必须是一致的
        interface ens33                #网卡名称
        priority 100                #定义优先级,数字越大,优先级越高如:主100,辅90
        advert_int 2                #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
        #mcast_src_ip 192.168.0.118     #发送多播数据包时的源IP地址
        #nopreempt
        #smtp_alert
        #lvs_sync_daemon_interface string 

        #设置验证类型和密码。主从必须一样
        authentication {
            auth_type PASS|AH   #设置vrrp验证类型
            auth_pass kang    #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
        }

        #虚拟地址配置
        virtual_ipaddress {
            # 配置虚拟ip -- 即替代nginx的ip地址(浏览器访问地址),可配置多个.
            ##如果两个nginx的ip分别是192.168.232.201,...205,则此处的虚拟ip跟它俩同一个网段即可(主从配置要相同)
            192.168.111.150
            192.168.111.190
        }

        #使用脚本设置
        track_script {
            chk_nginx         #心跳脚本,即在 vrrp_script 部分指定的名字
        }
    }


    心跳检查脚本(配置nginx的ip与port) ---------------------- check_nginx.sh

        脚本一:检测ip
            #!/bin/bash
            count=0
            for (( k=0; k<2; k++ ))
            do
             check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null )
             if [ "$check_code" != "200" ]; then
              count=count +1
              continue
             else
              count = 0
              break
             fi
            done
            if [ "$count" != "0" ]; then
             killall keepalived
             exit 1
            else
             exit 0
            fi

        脚本二:检测nginx
            #!/bin/bash
            A=`ps -C nginx --no-header |wc -l`        
            if [ $A -eq 0 ];then                            
                /usr/local/nginx/sbin/nginx
                if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                    exit 1
                else
                    exit 0
                fi
            else
                exit 0
            fi


启动keepalived
    cd /bin
    systemctl start keepalived.service
    systemctl restart keepalived.service
    ip add show ens33   查看网卡上启动的ip

1、全局快
配置一些影响nginx整体运行的配置

2、event块
影响nginx与用户的网络连接状态

3、http块
操作最频繁的块
一个server块就是一个虚拟主机。

#监听的端口,也可以写为192.168.0.5:8080 如此些后,server_name将不起作用
listen 8080;
server_name 192.168.0.5;

1.完全匹配
    location = / {
        #代理(转发)到哪个目的地址
        prosy_pass: 192.168.0.8:8082/kang/index;
    }
2.优先匹配
    location ~ / {
        prosy_pass: 192.168.0.9:8082/kang/index;
    }
3.通用匹配
    location / {
        #没有子路径时使用root来指定静态文件路径,若用alias指定静态路径的话末尾需要带'/',
        #若是带子目录的请求需要用alias且末尾不加'/'
        root /html
        #指定上面目录中的首页,默认为index.html
        index index.html;
        prosy_pass: 192.168.0.8:8082/kang/getUser;
    }

#带有子目录的地址
location /a {
    #是否开启查看nginx的状态信息功能
    stub_status on;

    alias /html;
    prosy_pass: 192.168.0.9:8082/kang/getUser;

    #允许指定的ip进行访问
    allow 192.168.0.8;
    #除了以上配置的可以访问的地址外都不允许访问
    deny all;
}

#目录下载功能
location /download {
    alias /usr/local/nginx/html/download;
    autoindex on;
}

#跳转功能 -- 访问 192.168.0.5:8080将跳转到百度页面
location / {
    return 302 http://www.baidu.com;
}

#负载均衡  -- 默认为轮询算法。还有:轮询加权(weight=n)、iphash(ip绑定)、fair(根据相应时间快的优先分配)等
upstream kang {
    server 192.168.0.8:8081;
    server 192.168.0.8:8082;
    server 192.168.0.9:8081;
    server 192.168.0.9:8082;
}

location / {
    proxy_pass http://kang;
}

   转载规则


《Nginx从入门到入土》 kang 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录