作者文章归档:zuojie@88.com

Nginx访问控制


Nginx访问控制

Nginx 提供了多种方式来进行访问控制,这些方式可以帮助你根据不同的条件(如 IP 地址、用户身份、请求方法等)来限制或允许对你的网站或应用程序的访问。以下是一些常用的 Nginx 访问控制方法和配置示例。

一、基于 IP 地址的访问控制

你可以使用 allowdeny 指令来根据客户端的 IP 地址允许或拒绝访问。这些指令可以用于 http, server, 或 location 块中。

配置示例

server {
    listen 80;
    server_name example.com;

    location /admin {
     ...

Read more

Nginx灰度发布


Nginx灰度发布

灰度发布又名金丝雀发布(Gray Release 或 Canary Release)是一种软件发布策略,旨在将新版本的应用程序或服务逐步、安全地部署到生产环境中。这种策略通常用于降低新版本引入的风险,避免大规模的故障影响所有用户。

灰度发布属于增量发布,新老版本同时为用户提供服务。灰度发布的主要目的是保证系统的可用性。每一次的线上变更都无法保证系统 100% 的无 bug,所以变更后要在线上小范围验证,等没问题再全面放开。而金丝雀发布是灰度发布的一种实现。

金丝雀发布由来:以前矿工开矿,在下矿洞前需要检查下方是否有毒气,矿工们先会放一只金丝雀进去探是否有毒气体,看金...

Read more

OpenResty+Redis:高性能缓存利器


OpenResty + redis

使用OpenResty中的Lua语言进行二次开发,实现Nginx接入层缓存的技术。

下图左边是常用的架构,http请求经过nginx负载均衡转发到tomcat,tomcat再从redis读取数据,整个链路过程是串行的,当tomcat挂掉或者tomcat线程数被消耗完,就无法正常返回数据。

下图右边是使用OpenResty的lua-resty-redis模块使nginx具备直接访问redis的能力,不占用tomcat线程,Tomcat暂时挂掉仍可正常处理请求,减少响应时长,提高系统并发能力。

图片

1.压缩功能

Redis的value值用json格式保存...

Read more

Apache配置详解


配置 Apache2 可以涉及到多个文件和目录,主要集中在 /etc/apache2/ 目录下。以下是一些关键的配置文件和目录及其作用:

1. 主配置文件

  • /etc/apache2/apache2.conf: 这是 Apache2 的主配置文件,包含了全局设置和模块加载指令。

2. 模块配置

  • /etc/apache2/mods-available/: 包含所有可用模块的配置文件。

  • /etc/apache2/mods-enabled/: 包含当前启用的模块的符号链接。

启用模块的命令:

sudo a2enmod module_name

禁用模块的命令:

sudo a2d...

Read more

Nginx常用配置


Nginx的配置

配置文件实例

以下为一个 nginx.conf 配置文件实例:

#定义 nginx 运行的用户和用户组
user www www;
#nginx 进程数,建议设置为等于 CPU 总核心数。
worker_processes 8;
#nginx 默认没有开启利用多核 CPU, 通过增加 worker_cpu_affinity 配置参数来充分利用多核 CPU 以下是 8 核的配置参数
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#...

Read more

Nginx之缓存配置


nginx之缓存配置

1、配置

在Nginx中,缓存是通过使用Nginx的proxy_cache模块来实现的。

开启proxy_cache模块:首先需要在Nginx配置文件中开启proxy_cache模块。

可以在http块中添加以下配置:

http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
}

在上面的配置中,proxy_cache_path指定了缓存的路径和参数,keys_zone定义了缓存的名称和大小,inactive定义了缓存的过期时间。

配置...

Read more

Shell数组


有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GENDER,班级有50个人,思考如何解决交互中数据存储的问题。很多人可能直接说或定义变量接收数据不就行了!nice,你很棒!! 解决方案如下:

1)每个学生通过5个变量,一个班级50个学生,5*50=250,妥妥的!我定义250个变量接收就可以了,美美哒!

兄弟,现在不是全班了是全校的学生需要录入你这个信息系统,你写变量吧!!当我提出这个需求的时候,作为开发你会不会想骂娘呢?

2)使用数组来定义,我只需要定义5个数组来接收所有用户的数据就可以了,5个数组就能解决一切,你觉得你会不会想了解下数组是什...

Read more

Nginx日志切割脚本


Nginx日志切割脚本

Nginx访问日志自动切割脚本:提升日志管理的效率与便捷性

在Web服务器的日常运维中,日志管理是一个至关重要的环节。Nginx作为当前流行的Web服务器软件,每天都会生成大量的访问日志。为了方便日志的查看、归档和分析,我们通常需要对这些日志文件进行切割,即按照一定的时间周期(如每天、每周或每月)创建新的日志文件。

一、脚本内容解析

以下是脚本的完整内容,并附有详细的注释和讲解:

#!/bin/bash  
# 定义Nginx日志目录  
LOG_DIR=/usr/local/nginx/logs    
# 获取上一天的时间,格式为YYYY-MM-DD  
YE...

Read more

nginx安装脚本


脚本安装Nginx

版本一

仅支持CentOS7系统

#!/bin/bash

###################################################################################
# 控制台颜色
BLACK="\033[1;30m"
RED="\033[1;31m"
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
BLUE="\033[1;34m"
PURPLE="\033[1;...

Read more

Redis编译安装脚本


Redis简单安装脚本

#!/bin/bash

# 检查系统类型
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS_NAME=$NAME
    OS_VERSION=$VERSION_ID
else
    echo "无法识别操作系统"
    exit 1
fi

echo "当前操作系统: $OS_NAME $OS_VERSION"

# 根据操作系统选择安装命令
if [[ "$OS_NAME" == "Ubuntu" ]];...

Read more