Nginx

Nginx第三篇 功能扩展OpenResty简单使用 OpenResty就是嵌入了LuaJIT VM的Nginx;LuaJIT即采用C语言写的Lua代码的解释器。通过 OpenResty,我们可以把 nginx 的各种功能进行自由拼接, 重要的是,开发门槛并不高,我们只需要熟悉简单灵巧的Lua 语言和nginx基础知识就可以上手开发简单功能了。 阅读详情

Nginx优点:

  • 跨平台,配置简单
  • 非阻塞,高并发连接(最高5W)
  • 内存消耗小
  • 开源
  • 稳定性高

基本命令:

  • 启动 nginx.exe
  • 停止 nginx -s stop 或者 nginx -s quit
  • 重载配置 nginx -s reload
  • 查看版本 nginx -V

当访问192.168.0.1时出现“welcome to openresty”。如果想显示为“hello word”,则需要修改配置文件nginx.conf:

location / {
	# root html;
	# index index.html index.htm;
	
	default_type text/html;   # 编码
	content_by_lua_block{
		ngx.say("hello world")   # 嵌入lua代码/脚本
		
		# 也可以使用content_by_lua_file filepath嵌入lua脚本文件
	}
}

获取HTTP请求信息:

获取uri参数:

-- 获取get请求参数
local arg=nginx.req.get_uri_args()   -- 数组
for k,v in pairs(arg) do
    ngx.say(k, v)    # 循环打印数组
end

-- 获取post请求时,请求参数
ngx.req.read_body()   -- 解析body参数之前一定要先读取body
local arg=nginx.req.get_post_args()
for k,v in pairs(arg) do
    ngx.say(k, v)    # 循环打印数组
end

获取header

local header=ngx.req.get_headers()
for k,v in pairs(arg) do
    ngx.say(k, v)    # 循环打印数组
    ngx.say("<br>")
end

获取body

local data=ngx.req.get_body_data()
ngx.say(data)

OpenResty的目标是让web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O模型,不仅对HTTP客户端请求,甚至于对远程后端,诸如MySQL,Redis等都进行一致的高性能响应。

常用架构:

  1. 负载均衡

  2. 单机闭环

    所有想要的数据都能从本地直接获取,在大多数时候无需通过网络去其他服务器获取。通过Lua程序直接访问文件系统和数据库。
    在这里插入图片描述

  3. 分布式闭环

    单机闭环会遇到两个问题:

    • 数据不一致问题(比如没有采用主从架构导致不同服务器数据不一致)
    • 遇到存储瓶颈(磁盘或者内存不够)

    解决数据不一致问题比较好的办法是采用主从或者分布式集中存储而存储瓶颈需要进行按照业务进行分片,将数据分散到多台服务器。

    在这里插入图片描述

  4. 接入网关

    接入网关又可以叫做接入层,及接收到流量的入口。在入口可以:
    在这里插入图片描述

Lua数据类型:

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

在这里插入图片描述

Lua变量有三种类型:全局变量,局部变量,表中的域。

Lua中的变量都是全局变量,包括语句块或者函数里的变量。除非用local显式声明为局部变量。

function fun()
	a = 10
	local b = 20
end

fun()

print(a, b)    -- 10, nil

条件运算:

-- if语句
if()
then
    print("hello world")
else
    print("222")
end

-- if嵌套
if()
then
    if()
    then
        print("22")
    end
end

循环语句

-- while循环
a = 10
while(a>10)
do
    print(a)
    a = a-1
end

-- repeat until	 重复执行循环,直到 指定的条件为真时为止
b = 10
repeat
    print(b)
    b = b-1
until(b<1)

-- for循环
for a = 1,10,2 do  
    print(a)        --1,3,5,7,9
end  

函数

function fun(a,b,c)
    return a+b+c
end

value = fun(1,2,3)
print(value)

引入模块

require "module"

print(module.sum(10,20))

更多笔记:
https://www.cnblogs.com/crazymakercircle/p/17052040.html#autoid-h2-0-0-0

Lua+OpenResty快速入门 Lua+OpenResty快速入门Lua概念特性应用场景Lua的安装Lua的语法第一个Lua程序Lua的注释标识符关键字运算符全局变量&局部变量Lua数据类型nilbooleannumberstringtabletablefunctionthreaduserdataLua控制结构if then elseif elsewhile循环repeat循环for循环ngx_lua模块概念ngx_lua模块环境准备方式一:lua-nginx-module方式一:lua-nginx-module方式二:OpenR 阅读详情

相关推荐

openresty的部署、nginx高速缓存的配置、nginx日志的可视化

OpenResty官网:http://openresty.org/cn/;OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。

Gong_yz的博客 3502

什么是OpenResty

OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库,许多高质量的第三方Nginx模块以及大多数外部依赖项。它旨在帮助开发人员轻松构建可伸缩的Web应用程序,Web服务和动态Web网关。 通过利用各种精心设计的Nginx模块(其中大部分由OpenResty团队自己开发),OpenResty有效地将nginx服务器转变为功能强大的Web应用服务...

yshir 4万+

nginx 配置 - nginx设置 - Nginx开机启动

1.简易安装nginx: ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid 2.进入/usr/lib/systemd/system目录下,编写nginx.service文件: [Unit] Desc...

爱上编程已很久 2128

OpenResty介绍

一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,所以接下来我们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务,并且帮我们弄清楚各个模块的编...

redfivehit的专栏 1355

Linux内网使用docker启动nginx或者直接使用nginx

本文详细介绍了在服务器上使用Docker部署Nginx的完整流程。首先说明如何安装Docker环境,包括下载、解压、配置系统服务等步骤。然后指导拉取Nginx镜像并打包成tar文件,上传到服务器加载。接着详细讲解Nginx容器的启动、配置挂载点、端口映射等操作,包括如何拷贝容器内配置文件到宿主机。文章还提供了常用Docker命令总结和注意事项,如自启动配置、多端口映射等。最后介绍了直接安装Nginx的替代方案,包括gcc、g++、zlib等依赖库的安装步骤。两种部署方式都给出了详细的命令和配置说明。

m0_71959549的博客 4704

CCC数字钥匙3.0标准解读(16)

介绍通信过程最重要部分:身份认证和加密.介绍需要身份认证的过程和需要加密的数据及过程.

weixin_41738640的博客 1531

yum安装nginx,编译安装nginx

安装nginx

Peter1617的博客 4229

学习记录——SIMPACK生成轨道谱文件的方法

生成轨道谱文件的方法,可以用于实测轨道谱导入和自制轨道谱导入仿真

weixin_51965897的博客 7798

nginx文件和目录以及部分nginx命令

etc/nginx/conf.d/ 目录包含默认的 HTTP 服务器配置文件,其中以 .conf 结尾的 文件都包含在 /etc/nginx/nginx.conf 文件的顶层 http 代码块中。/var/log/nginx/ 目录是 NGINX 的默认日志位置,您可以从中找到一个 access.log 文件和 error.log 文件。/etc/nginx/ 目录是 NGINX 服务器的默认配置根,可以从中找到指示 NGINX 如何运行的配置文件。nginx -t 测试 NGINX 配置。

qq_52676760的博客 4603

小土堆学习笔记1:Dataset类代码实践

上一页中反复提到“类”,这究竟是什么东西?按我的理解(肯定不准确也不正式),class类就是某一个东西的共性,而且是等待被确认的共性。比如每台手机都有它自己的品牌、框架、价格等等属性,class类正是这些尚不确定的属性;而一旦确认了这些属性,就能够确认这到底是一台什么型号什么状态的手机,在确认了全部属性后就知道,这是一台Apple 16 Pro Max。抽象的不确定的共性就是类,具体的确定的个性就是示例。这个共性可以被用于多个编程目的,只不过某一个具体的编程行为还有它自己的独特性。

qq_40525602的博客 1626

python 爬取携程全国旅游景点信息-2024.4.13

携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假、商旅管理等服务。携程网上有大量的旅游景点和酒店信息,这些信息对于旅行者和旅游业者都有很大的价值。通过爬虫技术,我们可以从携程网上获取这些信息,并进行数据清洗、数据分析、数据可视化等操作,从而得到有用的洞察和建议。

britlee的博客 1万+

【Nginx】nginx隐藏版本号

在实际运用nginx中我们最好将我们的版本号直接隐藏,因为有些版本号的nginx被爆出了漏洞,所以我们为了安全起见,最好将我们的版本号隐藏。 1.对于未安装的nginx我们使用源码编译安装才可以将版本号和web服务器名称都更改掉。 我们需要进入我们的源码包的目录 编辑以下配置文件scr/core/nginx.conf 1 #define NGINX_VERSION "1.10.2" 2 #define NGINX_VER "nginx/" NGINX_VERSION 我将以上的两个配置文件修改.

姜太小白的博客 9626

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

nginx配置开机启动/usr/local/nginx/sbin/nginx

Nginx 是一个很强大的高性能Web和反向代理服务器。虽然使用命令行可以对nginx进行各种操作,比如启动等,但是还是根据不太方便。设置开机自启动。 首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令: vim /etc/init.d/nginx 在脚本中添加如下命令: #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # descri

三朝看客 1万+

保姆级教程:用Cesium的Primitive API实现火箭发射全流程动画(含代码避坑)

本文详细介绍了如何使用Cesium的Primitive API实现火箭发射全流程动画,包括模型控制、关节动画和精细时序管理。通过实战代码示例和性能优化技巧,帮助开发者高效构建高复杂度航天仿真系统,显著提升三维可视化效果与运行效率。

weixin_42565652的博客 212

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

windows下nginx的安装及使用

本文介绍了Windows系统下Nginx的安装与基础使用方法。主要内容包括:1. 下载稳定版Nginx并解压;2. 通过双击或命令行启动Nginx;3. 验证启动成功的方法(访问localhost或查看进程);4. 修改监听端口和配置文件热更新;5. 两种关闭Nginx的方式(命令停止或强制终止进程);6. 配置负载均衡(通过proxy_pass转发请求并设置权重);7. 静态资源配置方法(指定本地目录映射)。文章提供了常用命令和配置示例,适合快速掌握Nginx的基本操作。

ywl470812087的博客 11万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Nginx学习之Nginx高性能的实现原理

Nginx master-worker进程机制。IO多路复用机制。Accept锁及REUSEPORT机制。sendfile零拷贝机制1、Nginx进程机制1.1、Nginx进程机制概述许多web服务器和应用服务器使用简单的线程的(threaded)、或基于流程的(process-based)架构, NGINX则以一种复杂的事件驱动(event-driven)的架构脱颖而出,这种架构能支持现代硬件上成千上万的并发连接。

人工智能全栈工程师 | 智能算法研发与实战落地​专注于人工智能算法研究、代码实现与工程落地,提供从模型设计到部署应用的全流程解决方案。 2348

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

查看nginx是否启动_keepalived+nginx高可用nginx存活检测

摘要:Keepalived可以用来防止服务器单点故障的发生,通过配合NGINX可以实现web 前端服务的高可用,但目前多个项目使用keepalived搭建软负载时,与NGINX相互独立,未实现两者的相互关联。keepalived中添加NGINX存活监测模块可实现keepalived配合NGINX高可用。关键词(知识库热搜词):高可用 存活监测1案例背景•现有项目使用软负载的情况下,kee...

weixin_39860636的博客 2103

从 Ingress-NGINX Controller 迁移至 NGINX Ingress Controller

本文介绍了从社区版Ingress-NGINX Controller迁移到F5提供的NGINX Ingress Controller的两种方法:使用NGINX自定义资源或Kubernetes原生Ingress资源。文章详细对比了两者在SSL终止、TCP/UDP负载均衡、金丝雀部署、流量控制等方面的配置差异,并提供了具体的资源转换示例。迁移后可以充分利用NGINX Plus的高级功能,如会话保持、mTLS认证等。文档摘自《Kubernetes Ingress Controller Deployment and

NGINX开源社区的博客 1911

Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目

NGINX(读作:engine-x)是用于Web 服务、反向代理、内容缓存、负载均衡、媒体流传输等场景的开源软件。它最初是一款专为实现最高性能和稳定性而设计的 Web 服务器。除了 HTTP 服务器功能以外,NGINX 还可用作电子邮件(IMAP、POP3 和 SMTP)的代理服务器以及 HTTP、TCP 和 UDP 服务器的反向代理与负载均衡器。

lijie1025的博客 2256

掌握NGINX配置,就从这里开始:NGINX Config

掌握NGINX配置,就从这里开始:NGINX Config nginxconfig.io⚙️ NGINX config generator on steroids ????项目地址:https://gitcode.com/gh_mirrors/ng/nginxconfig.io 当你在面对NGINX的复杂配置时是否感到困扰?不用担心,NGINX Config这个开源项目就是你的解决方案。它是一...

gitblog_01163的博客 1739

重启 nginx

如果你只想重启某个特定的nginx实例,你可能需要找到该进程的PID并结束它,然后手动启动nginx。这通常不是推荐的做法,因为它可能会导致服务中断。要重启nginx,你可以使用命令行工具来执行这个任务。确保你有适当的权限来执行这些命令,通常需要root权限。如果你不是root用户,你可能需要使用。这将重新加载配置文件而不重启服务。

Smile_Gently的博客 1万+

nginx-ingress-controller升级nginx版本

title: “nginx-ingress-controller升级ingress版本”升级nginx-ingress-controller中nginx的版本more。

huyiqiuuuu的博客 1498
上一篇: 博物馆大盗问题 Python
下一篇: go学习笔记
sumatch
博客等级 码龄8年 251粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值