企业高性能web服务器Nginx

企业高性能web服务器Nginx

一、Nginx的源码编译

1、在官网选择稳定版的nginx下载,完成后解压。

2、检测安装环境,安装必要的依赖。

3、再根据自身需求安装模块并编译Nginx。

4、创建nginx用户及启动文件

5、编写启动文件

首先通过nginx -s stop停止服务,否则会显示端口占用。

二、Nginx的平滑升级和回滚

1、下载高版本nginx

2、编写高版本nginx版本信息配置文件

3、源码编译并启动

1)不运行make install

2)将objs下的nginx拷贝到原先的启动文件下

        [root@Nginx sbin]# \cp -f /root/nginx-1.29.4/objs/nginx  /usr/local/nginx/sbin/nginx
-f为强制覆盖。\表示绕过可能的别名

3)查看nginx日志文件夹

4)结束nginx的master进程

5)再查看日志文件夹及运行版本与之前修改的配置文件内容一致

4、回收旧版本的子进程

5、版本回退

1)重新将旧版本的nginx启动脚本复制至启动文件夹

2)重新加载旧版本nginx主进程

3)查看版本信息

三、Nginx配置文件管理及优化参数

1、增加用户为Nginx、worker进程个数增加

2、更改核心数量并绑定CPU

3、增加nginx并发量

测试

四、Nginx下构建PC站点

1、location下的root字段

用子配置文件的方式编写

1)新建子配置文件目录

2)编写主配置文件

include "/usr/local/nginx/conf/conf.d/*.conf";

3)编写子配置文件并新建测试访问内容

[root@Nginx ~]# mkdir  -p /webdata/nginx/timinglee.org/lee/html
[root@Nginx ~]# echo lee.timinglee.org > /webdata/nginx/timinglee.org/lee/html/index.html

mkdir  -p /webdata/nginx/timinglee.org/lee/html/lee
[root@Nginx conf.d]# echo lee > /webdata/nginx/timinglee.org/lee/html/lee/index.html

#lee标识location中的root值+location 后面指定的值代表目录的路径

4)效果测试

2、location中的alias字段

1)修改子配置文件

2)测试

建立/mnt/下默认发布文件

echo passwd > /mnt/index.html

五、KeepAlived长链接优化

1、设定长链接时间

五秒后自动断开

2、设定长链接次数

访问三次后自动断开

六、Location字符匹配详解

#匹配优先级从高到低:=, ^~, ~/~*, 不带符号

1、后面不加符号

表示区分大小写,严格访问该目录,不可包含

2、location后+“=”

表示精确匹配,必须完全一致

3、location后+"^~"

表示由该目录开头,里面可以包含其他目录但必须是根目录下的该目录

4、location后+"~"

表示访问的文件夹包含该名称由该字母开头的,后面可以跟其他字符,且区分大小写。

5、location后+"~*"

表示访问文件包含该内容,不区分大小写,只要包含即可被选中。但是同样改文件名前面必须一致。

6、location后+"\"

为转义字符,通过此做法进行动静分离。

七、服务访问的用户认证

1、非交互建立用户admin

2、编辑配置文件启用密码登录功能

3、建立访问文件

[root@Nginx conf.d]# mkdir -p /usr/local/nginx/html/admin

[root@Nginx conf.d]# echo amdin >/usr/local/nginx/html/admin/index.html

4、测试

八、自定义错误页面

1、新建错误页面内容

2、编辑配置文件

3、重启后测试

没有新建该访问内容,错误代码为404转换到错误页面内容上。

九、自定义错误日志

1、新建错误日志存放目录

[root@Nginx ~]# mkdir  -p /usr/local/nginx/logs/timinglee.org/

2、修改配置文件内容

3、重启并测试

十、Nginx中建立下载服务器

1、新建普通文件及大文件做测试

2、编辑配置文件

3、客户端端拉取内容

4、下载控速

1)实际下载速度太快影响服务器性能

2)修改配置文件限制下载速度

3)测试

5、显示文件大小优化

通过配置文件中的参数进行显示优化

6、时间显示调整

7、设定页面风格

通过autoindex_format参数后面跟不同的页面类型达到设定页面风格的目的

十一、Nginx的文件检测

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。

1、设定测试文件

2、编辑配置文件

3、访问测试

十二、Nginx的状态页

1、修改配置文件

只能usr/local/nginx/conf/.htpasswd文件中的用户才能查看

2、访问测试

十三、Nginx的压缩功能

1、新建测试文件

一个文件大小较大一个较小

2、修改主配置文件

3、子配置文件中指定路径

4、访问测试文件测试

十四、Nginx变量

1、增加Nginx的echo模块

删除原先的nginx启动文件,完成后将最新的启动文件拷贝到启动文件夹下。

2、内建变量

3、测试

4、内建变量

十五、网页从写

1、网页重写指令

1)if指令

=        #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false
!=        #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false
~        #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~
#区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假
~*        #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~*        #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真
-f 和 !-f        #判断请求的文件是否存在和是否不存在
-d 和 !-d        #判断请求的目录是否存在和是否不存在
-x 和 !-x        #判断文件是否可执行和是否不可执行
-e 和 !-e        #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)
#注意:
#如果$变量的值为空字符串或0,则if指令认为该条件为false,其他条件为true。
#nginx 1.0.1之前$变量的值如果以0开头的任意字符串会返回false

2)set指令

3)return指令

返回一个值

4)break值

直接中断

2、flag

1)临时重定向redirect

将网页临时重写到百度

2)永久重定向permanent

3、break和last的区别

1)新建测试文件

2)break:修改配置文件

3)break:测试

访问break/index.html时从写到text1/index.html,遇到break直接中断。

4)last:配置文件修改

5)last测试

遇到last时继续向下读取,重写到location /test1字段

十六、Nginx利用网页重写实现全站加密

1、制作公私密钥

[root@Nginx ~]# openssl req -newkey rsa:2048 -nodes  -sha256  -keyout  /usr/local/nginx/certs/timinglee.org.key -x509 -days 365 -out /usr/local/nginx/certs/timinglee.org.crt

2、编辑加密配置文件

3、测试

十七、防盗链

1、新建主机编辑配置文件

图片是从nginx服务器上获得的

2、修改nginx服务器配置文件防止盗链

访问时直接跳转到另外一个图片

3、测试

十八、Nginx的反向代理

1、简单的代理

[root@RS2 ~]# mkdir  /var/www/html/web
[root@RS2 ~]# echo 172.25.254.20 web > /var/www/html/web/index.html

2、proxy_hide_header filed参数

隐藏头部信息

3、proxy_pass_header

默认访问不透传server信息

4、透传信息proxy_set_header

1)修改后端服务器日志信息配置

[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" combined


[root@RS1 ~]# systemctl restart httpd

2)Nginx修改配置文件

3)访问后查看日志

十九、利用反向代理实现动静分离

1、实验环境配置

在RS1中下载php软件。

2、修改配置文件

3、测试

二十、缓存加速

1、高并发访问

2、设定缓存加速

1)主配置文件修改

2)子配置文件修改

3、测试

二十一、反向代理负载均衡

1、编辑主配置文件

2、编辑子配置文件

sorry页面设置

[root@Nginx ~]# mkdir  /webdir/timinglee.org/error/html -p
[root@Nginx ~]# echo error > /webdir/timinglee.org/error/html/index.html

[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhosts.conf
server {
    listen 8888;
    root /webdir/timinglee.org/error/html;
}

3、测试

后端服务停止后

二十二、负载均衡算法

二十三、PHP源码编译

1、下载安装包

2、下载依赖

3、选择模块编译

[root@Nginx ~]#  ./configure --prefix=/usr/local/php  --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd

4、配置PHP

1)指定pid文件存放位置

2)编辑主配置文件www.conf

设置监听端口

3)修改时区配置文件

[root@Nginx php-fpm.d]# cp /root/php-8.3.30/php.ini-production  /usr/local/php/etc/php.ini

[root@Nginx php-fpm.d]# vim /usr/local/php/etc/php.ini

4)生成启动文件

[root@Nginx ~]# cp /root/php-8.3.30/sapi/fpm/php-fpm.service /lib/systemd/system/
[root@Nginx ~]# vim /lib/systemd/system/php-fpm.service

将其注释掉这些文件的只读权限,重新加载启动文件后启动php

5、PHP设置环境变量

[root@Nginx ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/nginx/sbin:/usr/local/php/sbin:/usr/local/php/bin

二十四、Nginx整合PHP

1、准备测试页面

php页面及静态页面

2、编辑配置文件

3、测试

二十五、利用memcache实现php的缓存加速

1、下载安装memcache

2、配置memcache

3、升级php对于memcache的支持

1)下载memcache-8.2.tgz插件

下载configure脚本工具

2)修改配置文件使其支持memcache

4、测试性能

二十六、nginx+memcache实现高速缓存

1、重新编译nginx

增加memcache高速缓存模块

2、整合memcache

测试:ab -n 10000 -c500 http://php.baobao.org/example.php

二十七、Nginx的四层负载均衡代理

1、后端服务器安装mariadb并新建账户

2、dns服务

1)修改主配置文件

2)修改子配置文件

3)配置解析记录

4)测试

3、TCP四层负载

1)修改主配置文件

导入子配置文件位置在http字段之外

2)编辑子配置文件

stream模块

3)测试

另外的客户端测试

4、UDP四层负载

1)修改子配置文件

仅能有一个stream模块文件

2)测试

二十八、Nginx的二次开发版本OpenResty编译安装

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

[root@Nginx ]#wget https://openresty.org/download/openresty-1.27.1.2.tar.gz
[root@Nginx ~]#dnf -yq install gcc pcre-devel openssl-devel perl zlib-devel
[root@Nginx ~]#useradd -r -s /sbin/nologin nginx
[root@Nginx ~]#tar zxf openresty-1.27.1.2
[root@webserver ~]# cd openresty-1.27.1.2/
[root@Nginx openresty-1.17.8.2]#./configure \
--prefix=/usr/local/openresty \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_gzip_static_module 
--with-pcre --with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

[root@Nginx openresty-1.17.8.2]#gmake && gmake install

[root@webserver openresty]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/openresty/bin

source  ~/.bash_profile

Read more

从拼搭到人工智能:青少年机器人编程的系统化学习攻略

很多家长问我:“孩子今年X岁,对乐高和编程感兴趣,想学机器人,到底该怎么开始?家里正好有一套泺喜的教具,该怎么利用起来?” 作为一位深耕青少儿编程教育的从业者,我想说:机器人编程不是单纯写代码,它是机械工程、电子电路和计算机科学的综合体。 如果学习路径走错了,很容易在某个阶段遇到瓶颈,导致孩子产生畏难情绪而放弃。而泺喜的金属教具,以其高精度、高强度、接近工业级的特点,为孩子提供了一条更硬核、更贴近真实工程的成长路径。 今天,我们就来梳理一套适合青少年、并结合泺喜教具特色的 “机器人编程系统化学习金字塔” ,帮助孩子从零基础一路通关到人工智能。 第一阶段:机械启蒙与动手感知(6-9岁) 关键词:金属构件、螺丝紧固、传动原理 这个年龄段的孩子还处于皮亚杰认知理论中的“前运算阶段”向“具体运算阶段”过渡期。他们无法理解抽象的语法,但能通过双手感知物理世界。 * 学习内容: 1. 机械搭建:使用泺喜的金属构件(梁、板、轴、齿轮、螺丝螺母),学习使用螺丝刀、

By Ne0inhk

【机器人零件】行星减速器

行星减速器 行星减速器作为精密传动系统的核心部件,在现代工业中扮演着至关重要的角色。本文将全面介绍行星减速器的减速比计算公式、提供C++代码实现实例,并详细分析其应用场景和使用条件。通过深入理解这些内容,工程师和技术人员能够更准确地选择、设计和应用行星减速器,满足各种机械传动需求。 行星减速器基本原理与结构组成 行星减速器,又称行星齿轮减速器,是一种采用行星轮系传动原理的精密减速装置。其基本结构由四个主要部件构成:位于中心的太阳轮(Sun Gear)、围绕太阳轮旋转的行星轮(Planetary Gear)、固定不动的内齿圈(Ring Gear)以及连接行星轮的行星架(Planetary Carrier)。这种独特的结构使得行星减速器能够在紧凑的空间内实现高减速比和大扭矩输出。 行星减速器的工作原理基于齿轮啮合理论,通过太阳轮、行星轮和内齿圈之间的相互作用实现动力传递和转速降低。当电机或其他动力源驱动太阳轮旋转时,行星轮不仅会绕自身轴线自转,还会在行星架的带动下绕太阳轮公转。这种复合运动通过行星架输出,实现减速和增扭的效果。由于多个行星轮同时参与啮合,载荷被均匀分散,这使得行星

By Ne0inhk

OpenClaw 完整安装与配置文档(包含Minimax/deepseek模型接入、飞书机器人接入)

OpenClaw 完整安装与配置文档 文档说明:本文档适用于 Linux 系统(Debian/Ubuntu 系列),详细梳理 OpenClaw 从基础环境准备、核心程序安装,到模型配置(Minimax/DeepSeek)、飞书渠道对接的全流程,所有交互式配置选项完整呈现,步骤可直接复制执行,适配新手操作。 适用场景:OpenClaw 新手部署、企业内部飞书机器人对接、Minimax/DeepSeek 模型配置 前置说明: 1. 服务器需联网,确保能访问 GitHub、npm、飞书官网; 2. 操作全程使用终端命令行,建议使用远程工具(如 Xshell、Putty)连接服务器; 3. 复制命令时需完整复制,避免遗漏特殊符号; 4. 所有交互式配置选项均完整列出,按文档指引选择即可。 5. 拥有root用户/sudo权限。

By Ne0inhk
机器人动作是否准确?现场操作演示

机器人动作是否准确?现场操作演示

舞台侧幕的灯光暗下,主持人的开场白余音未落,一个身影从后台缓缓走出。它不是演员,而是一台人形机器人,在聚光灯下站定,手臂抬起,向观众席方向做了一个标准的挥手动作。 这样的瞬间,正在越来越多的商业活动现场上演。作为一线观察者,我记录了不同客户在租用或采购人形机器人、机器狗时,如何将它们作为科技感的表演载体或氛围元素,融入自己的活动流程中。客户关注的,从来不是复杂的技术参数,而是事前约定的那个“亮相”,能否在现场被准确兑现。 单次全程表演与多次分段出场 对于许多品牌快闪或节日庆典活动,机器人往往被安排在一次集中的表演时段内完成所有展示。 一家商场在举办周年庆时,租用了一台人形机器人。他们的需求很明确:在下午的抽奖环节前,有一段约五分钟的科技主题表演,作为抽奖前的氛围铺垫。活动当天,机器人被安置在舞台中央的固定圆台上。当抽奖环节的主持人退至一旁,现场音乐切换为一段富有节奏感的电子乐时,机器人开始执行一套预设的舞蹈动作组合。服务人员站在舞台侧后方,全程未离开该区域。商场活动策划人员事后转述:“我们流程上就写了‘科技舞蹈表演(5分钟)’,它跳完,主持人接着上台抽奖,时间卡得刚好。”

By Ne0inhk