LLLLLuuusa的个人博客 - Nginx
type: channel
link: https://www.llllluuusa.top/index.php/tag/Nginx/
items: Nginx笔记
items: Nginx最佳配置
items: Lua

Nginx笔记
type: item
date: 2025-07-18T21:37:08+08:00
description: Nginx介绍背景介绍Nginx是一个高性能的HTTP和反向代理的Web服务,同时也是一个POP3/SMTP/IMAP代理服务器,由伊戈尔·塞索耶夫(俄罗斯人)用C语言开发Nginx优点 速度更快,并发更高 配置简单,拓展性强 高可靠 热部署 成本低、BSD许可证 Nginx功能特性Nginx的功能特性大体上可分为基本HTTP服务、高级HTTP服务、邮件服务基本HTTP服务 处理静态文件 反向代理 负载均衡 文件压缩 SSL协议 高级HTTP服务 设置虚拟主机 支持网络监控 支持FLV和MP4流媒体传输 邮件服务 支持内部IMAP/POP3代替服务 支持内部SMTP服务 环境安装源代码安装(推荐)1.下载Nginx可在官网下载Lunx/Windows的Nginx,http://nginx.org/下载好后解压nginxsh tar -xzf 文件包1.2下载OpenRestryOpenRestry自带对应的Nginx,并且内部支持使用Lua脚本可在官网下载OpenRestry,http://openresty.org/cn/download.html下载好后解压OpenRestrysh tar -xzf 文件包2.确认环境由于Nginx是基于c语言开发,因此我们需要确认是否由c语言环境sh yun install -y gcc gcc --version由于Nginx需要用上正则表达式来操作Rewirte,因此需要安装PCREsh yum install -y pcre pcre-devel rpm -qa pcre pcre-devel由于Nginx使用了一些压缩算法,因此需要安装zlibsh yum install -y zlib zlib-devel rpm -qa zlib zlib-devel可以一键安装,若已安装会更新为最新版sh yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel3.安装先执行configuresh ./configure若需要特殊配置,可添加指令```sh ./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --modules-path=/usr/local/nginx/modules \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --lock-path=/usr/local/nginx/logs/nginx.lock```详细的配置可自行百度,或者sh configure --help最后安装sh make && make install Nginx默认安装/usr/local/nginx OpenRestry默认安装/usr/local/openrestry/nginx yum安装sh yum -y install nginx查看是否安装成功sh whereis nginx启动nginx,进入sbin里打开nginxsh cd ../user/sbin ./nginx /etc/nginx/nginx.conf //yum方式安装后默认配置文件的路径 /usr/share/nginx/html //nginx网站默认存放目录 /usr/share/nginx/html/index.html //网站默认主页路径 目录结构在nginx里,有几个重要的文件 html:存放静态资源 conf:存放配置文件 nginx.conf:nginx的配置 log:存放日志文件 error.log:错误日志 access.log:访问日志 Nginx控制命令行控制命令行控制需要在./sbin目录下执行| 命令 | 效果 | | ------------------- | --------------------------------------- | | ./nginx | 开启nginx | | ./nginx -t | 测试配置文件语法是否正确 | | ./nginx -T | 测试配置文件语法是否正确,并输出配置信息 | | ./nginx -s stop | 立刻关闭整个服务 | | ./nginx -s quite | 关闭整个服务 | | ./nginx…

Nginx最佳配置
type: item
date: 2025-07-18T21:37:08+08:00
description: configure推荐:sh ./configure --with-http_gzip_static_module --with-http_ssl_module可选:sh ./configure --add-module=/root/nginx/module/purge --add-module=/root/fair with-http_gzip_static_module:压缩模块 --with-http_ssl_module:https模块 purge:清除缓存模块 fair:智能负载均衡模块 Nginx主配置```sh worker_processes auto; #并发数,与cpu内核相同 worker_rlimit_nofile 51200; #当前worker运行用户的最大文件打开数值 user 用户名 #设置用户名events{ use epoll; #nginx底层使用的函数 worker_connections 51200; #单个worker最大连接数 multi_accept on; #同时收到多个网络连接 }http{ include mime.types; #解析前端响应的资源server_names_hash_bucket_size 512; #服务器名大小限制512字节 client_header_buffer_size 32k; #请求头大小限制32k large_client_header_buffers 4 32k;#请求行+请求头限制4*32 client_max_body_size 50m; #最大上传文件 limit_conn_zone $binary_remote_addr zone=perip:10m; #限制同一ip并发连接数以及下载带宽 limit_conn_zone $server_name zone=perserver:10m; #$server_name是限制同一server并发连接数以及下载带宽 sendfile on; #使用sendflie()提升文件传输性 tcp_nopush on; #提高网络传输效率 tcp_nodelay on; #保证网络连接实效性 keepalive_timeout 60; #接超时时间 include proxy.conf; #导入反向代理配置 include gzip.conf #导入压缩配置 include /项目名称/*.conf; #导入具体项目的配置 }```反向代理配置nginx proxy_temp_path /www/server/nginx/proxy_temp_dir; #从代理服务器接收到的数据的临时文件定义目录 proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;#从代理服务器接收到的数据的缓存文件定义目录,有两层目录,缓存区为cache_one,1天内为访问就删除,最大缓存空间5g client_body_buffer_size 512k;#如果请求的值大于512小于就会将数据先存储到临时文件中 proxy_connect_timeout 60;#建立连接超时时间 proxy_read_timeout 60;#获取数据超时时间 proxy_send_timeout 60;#发送数据超时时间 proxy_buffer_size 32k;#被代理服务器响应头大小,不够会再申 proxy_buffers 4 64k;#被代理服务器响应体大小,4*64k,不够会再申 proxy_busy_buffers_size 128k; #在没有完全读完响应就开始传送数据 proxy_temp_file_write_size 128k;#设置同时写入临时文件的数据量的总大小 proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;#发送503和404时重试 proxy_cache cache_one; #开启缓存,缓存名cache_one压缩配置nginx gzip on; #开启压缩 gzip_min_length 1k; #超过指定大小不压缩 gzip_buffers 4 16k; #压缩申请的空间数和大小 gzip_comp_level 5; #压缩等级,好点服务器可以用6 gzip_types text/plain application/javascript application/x-javascript text/javascript text/css a…

Lua
type: item
date: 2025-07-18T21:37:08+08:00
description: lua概述Lua是一种轻量、小巧的脚本语言，用标准C语言编写并以源代码形式开发。设计的目的是为了嵌入到其他应用程序中，从而为应用程序提供灵活的扩展和定制功能。特性跟其他语言进行比较，Lua有其自身的特点：（1）轻量级Lua用标准C语言编写并以源代码形式开发，编译后仅仅一百余千字节，可以很方便的嵌入到其他程序中。（2）可扩展Lua提供非常丰富易于使用的扩展接口和机制，由宿主语言(通常是C或C++)提供功能，Lua可以使用它们，就像内置的功能一样。（3）支持面向过程编程和函数式编程应用场景Lua在不同的系统中得到大量应用，场景的应用场景如下:游戏开发、独立应用脚本、web应用脚本、扩展和数据库插件、系统安全上。安装Linux安装在linux上安装Lua非常简单，只需要下载源码包并在终端解压、编译即可使用。Lua的官网地址为:https://www.lua.org 点击download可以找到对应版本的下载地址，我们本次课程采用的是lua-5.3.5,其对应的资源链接地址为https://www.lua.org/ftp/lua-5.4.1.tar.gz,也可以使用wget命令直接下载: wget https://www.lua.org/ftp/lua-5.4.1.tar.gz 编译安装 cd lua-5.4.1 make linux test make install如果在执行make linux test失败，报如下错误:说明当前系统缺少libreadline-dev依赖包，需要通过命令来进行安装yum install -y readline-devel验证是否安装成功lua -v运行命令式Lua交互式编程模式可以通过命令lua -i 或lua来启用:lua脚本式也可以通过将写好的lua代码文件执行sh lua hello.luavscode由于openrestry无法在vscode中运行,即脚本可以在vscode运行,但是无法获取到Nginx的参数,所以学习此方法无太大意义,仅用于测试lua脚本语法由于lua底层是由c编写,所以语法上和c极为相似注释单行注释的语法为：--注释内容多行注释的语法为:--注释内容 注释内容 --如果想取消多行注释，只需要在第一个--之前在加一个-即可，如：---注释内容 注释内容 --运算符Lua中支持的运算符有算术运算符、关系运算符、逻辑运算符、其他运算符。算术运算符:+ 加法 - 减法 * 乘法 / 除法 % 取余 ^ 乘幂 - 负号例如:10+20 -->30 20-10 -->10 10*20 -->200 20/10 -->2 3%2 -->1 10^2 -->100 -10 -->-10关系运算符``` == 等于 ~= 不等于大于 < 小于 = 大于等于 <= 小于等于 ```例如:10==10 -->true 10~=10 -->false 20>10 -->true 20<10 -->false 20>=10 -->true 20<=10 -->false逻辑运算符and 逻辑与 A and B && or 逻辑或 A or B || not 逻辑非 取反，如果为true,则返回false !逻辑运算符可以作为if的判断条件，返回的结果如下:``` A = true B = trueA and B -->true A or B -->true not A -->falseA = true B = falseA and B -->false A or B -->true not A -->falseA = false B = trueA and B -->false A or B -->true not A -->true```其他运算符``` .. 连接两个字符串返回字符串或表的长度```例如:```"HELLO ".."WORLD" -->HELLO WORLD"HELLO" -->5```全局变量&局部变量在Lua语言中，全局变量无须声明即可使用。在默认情况下，变量总是认为是全局的，如果未提前赋值，默认为nil:要想声明一个局部变量，需要使用local来声明Lua数据类型Lua有8个数据类型nil(空，无效值) boolean(布尔，true/false) number(数值) string(字符串) function(函数) table（表） thread(线程) userdata（用户数据）可以使用type函数测试给定变量或者的类型：print(type(nil)) -->nil print(type(true)) --> boolean print(type(1.1*1.1)) --> number print(type("Hello world"))…