IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 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
? ? }
}
备注:需要修改的地方已经使用红色标注

????????

????????????????

????????????????

????????

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:17:57  更:2022-01-30 19:19:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 7:53:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码