xxx.nginx转发+OpenResty(nginx升级版)_web服务器+lua

news2024/9/27 17:29:04

看上图,点开图发现图片空白不是网卡了,是内容有点多,缩小图片(放大指定位置)后食用。😁

内容分为三部分:

nginx转发

OpenResty(nginx升级版)_web服务器+lua

测试

1.nginx转发

1.1.搭建nginx

略; 翻阅其他文章;window直接安装exe, linux翻翻博客, docker 拉个nginx镜像再翻翻博客。

1.2. nginx转发配置


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;

    upstream nginx-cluster{
        server 132.232.xxx.xxx:8081;
    }
    server {
        listen       80;
        server_name  localhost;

        location /api {
            proxy_pass http://nginx-cluster;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

这个配置是nginx conf文件的配置

1.upstream 是做负载均衡的,也可以写多个server
upstream nginx-cluster{
        server 132.232.xxx.xxx:8081;
        server 132.232.xxx.xxx:8082;
}

这样写即可。

其中nginx-cluster就是一个变量,叫什么都可以,不过配上了之后,nginx在做反向代理时可以代理到指定ip:端口,也可以代理到这个变量。这个变量会被负载均衡器自动分配到对应的服务上去。

2. http
  • nginx监听着http的请求

3. listen 80;
  • nginx转发服务器监听着80端口

4. location /api { proxy_pass http://nginx-cluster; }
  • http://nginx转发服务器地址:80/api就会发送到nginx负载均衡器那里,从而转发给指定的服务器上的进程(服务)。

1.3. 启动nginx

  • window执行nginx.exe

  • linux 执行启动命令

  • 进入nginx/sbin目录

cd /usr/local/nginx/sbin/

  • 启动nginx

./nginx

  • docker run容器即可;

1.4. 启动,关闭,重启,命令

  • ./nginx //启动

  • ./nginx -s stop //关闭

  • ./nginx -s reload

  • ./代表是当前目录,前提是进入了nginx命令那个目录xxx/xxx/nginx/sbin

  • 配了环境变量就不需要./了。 --------有些啰嗦了。

2. OpenResty(nginx升级版)_web服务器+lua

2.1. OpenResty web服务器

1.简介

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

OpenResty ® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

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

2.安装

2.1首先你的Linux虚拟机必须联网
2.2安装开发库
yum install -y pcre-devel openssl-devel gcc --skip-broken
2.3安装OpenResty仓库
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
如果提示说命令不存在,则运行:
yum install -y yum-utils
然后再重复上面的命令
2.4安装OpenResty
yum install -y openresty
2.5安装opm工具
opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。
yum install -y openresty-opm
2.6目录结构
默认情况下,OpenResty安装的目录是:/usr/local/openresty
2.7配置nginx的环境变量(它本质还是nginx只是多了些插件)
vi /etc/profile
在最下面加入两行:
export NGINX_HOME=/usr/local/openresty/nginx
export PATH=${NGINX_HOME}/sbin:$PATH

# NGINX_HOME:后面是OpenResty安装目录下的nginx的目录

然后让配置生效:
source /etc/profile

3.启动和运行

3.1 OpenResty底层是基于Nginx的,查看OpenResty目录的nginx目录,结构与windows中安装的nginx基本一致:
# 启动nginx
nginx
# 重新加载配置
nginx -s reload
# 停止
nginx -s stop
3.2 nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。修改`/usr/local/openresty/nginx/conf/nginx.conf`文件,内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
3.3 nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。修改`/usr/local/openresty/nginx/conf/nginx.conf`文件,内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
3.4在Linux的控制台输入命令以启动nginx
3.5然后访问页面:http://132.232.xxx.xxx:8081注意ip地址替换为你自己的虚拟机IP:

4.后续步骤(在nginx的conf文件中进行配置lua拦截请求)

4.1.加载OpenResty的lua模块:
#lua 模块
lua_package_path "/usr/local/openresty/lualib/?.lua;;";
#c模块  
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
4.2拦截指定请求(这里拦截带/api/item的请求)交给lua进行处理
location /api/item {
            # 默认的响应类型
            default_type application/json;
            # 响应结果由lua/item.lua文件来决定
            content_by_lua_file lua/item.lua;
        }
4.3完成配置后,配置文件长这样

#user  nobody;
worker_processes  1;
error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #lua 模块
    lua_package_path "/usr/local/openresty/lualib/?.lua;;";
    #c模块  
    lua_package_cpath "/usr/local/openresty/lualib/?.so;;";

    server {
        listen       8081;
        server_name  localhost;
        location /api/item {
            # 默认的响应类型
            default_type application/json;
            # 响应结果由lua/item.lua文件来决定
            content_by_lua_file lua/item.lua;
        }
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2.2. Lua

1.根据OpenResty的nginx conf创建lua文件

  • nginx conf中写到 content_by_lua_file lua/item.lua;

  • 意味着需要在nginx目录下创建一个lua目录,在lua目录下创建一个item.lua的文件

  • cd /usr/local/openresty/nginx

  • mkdir lua

  • touch lua/item.lua

2.编写item.lua 文件

  • vi item.lua(或者用其他文本编辑工具都可)

  • 键入代码

ngx.say('{"id":10001,"name":"SALSA AIR","title":"RIMOWA 27寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4","price":19900,"image":"https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category":"拉杆箱","brand":"RIMOWA","spec":"","status":1,"createTime":"2019-04-30T16:00:00.000+00:00","updateTime":"2019-04-30T16:00:00.000+00:00","stock":2999,"sold":31290}')
  • 这段代码的意思是,以lua文件,向外发送json数据,ngx.say('')里面是一个json数据

  • 重新加载nginx配置

  • nginx -s reload

3.测试

  • 从nginx转发服务器上,访问http://localhost/api/item/10086

  • 返回的是openResty以lua的方式返回的json数据

  • 即从nginx转发到openRestyWeb服务器以lua做controller支撑返回数据就成功了

lua入门知识传送门:

https://blog.csdn.net/tgbyhn31/article/details/128530814?spm=1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【B样条曲线:计算系数】

对这篇文章的翻译,仅学习。 B样条曲线:计算系数 尽管de Boor的算法是计算b样条曲线上对应于给定u的点的标准方法,但我们在许多情况下确实需要这些系数(例如,曲线插值和逼近)。我们将举例说明一种简单的方法。 给定一条由n1个控制…

【PyQt】PyQt的缺陷及意外退出的可能原因

1 背景 最近在软件项目中比较深入的用到了 Qt GraphicsView Framework。PyQt 作为 Qt 的非官方Python绑定库(Qt的官方Python绑定库是PySide)总是出现很多意外崩溃/Bug,并且很难调试和追踪。 2 问题 软件项目中需要自定义 QGraphicsItem &a…

初识Cocos Creator

1.1 Cocos 不同时期与产品刚接触Cocos家族的时候,会有很多个Cocos的版本与分支,比如Cocos2d, Cocos2d-x, Cocos Creator 1.x, Cocos Creator 2.x, Cocos Cretor3D, Cocos Creator 3.x, CocosDashboard, 等我们先把Cocos 的主要产品脉络梳理一遍。对啦&am…

人体reid数据集

mars数据集 参考:https://blog.csdn.net/qq_34132310/article/details/83869605 整个Mars数据的大小大概有6.3G。 bbox_train文件夹中,有625个子文件夹(代表着625个行人id),共包含了8298个小段轨迹(track…

联合证券|战略新兴产业火了,高增长低估值股曝光

导读:2022年,A股商场值得记载的前史性大事件不断。这一年,A股商场上市公司数量正式打破5000家,战略新兴产业上市公司数量打破2500家,占比初次打破50%大关。这一年,A股商场顶住杂乱的外部环境因素&#xff0…

Pytorch介绍与基本使用

前言Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程,根据我在网上的了解,相比于Tensorflow,Pytorch简介易用。一、为什么选择Pytorch简…

在VBA里使用range(cells(),cells()) ,一个容易出错的点:需要注意 range() 和cells() 前都指定好sheet名!

1 问题 在VBA里使用range(cells(),cells()) 发现处了下面这个状况 当前sheet就是sh1时,代码正常运行当前sheet不是sh1时,有一行代码报错 arr3 sh1.Range(Cells(4, 3), Cells(16, 8))为什么会这样呢?Sub test1001()Dim sh1 As ObjectSet s…

足球视频AI(二)——球员与球的目标检测

一、基础概念 1.1 识别目标: 1)固定机位的视频中球员逐帧识别 2)固定机位的视频中球逐帧识别 3)位置换算与记录 1.2 实现思路 1,利用OpenCV的相邻帧差异识别移动物体 2,利用YOLO7的机器学习识别对象&…

LNPS递送辅料,DOPE,4004-05-1,二油酰磷脂酰乙醇胺

LNPS递送辅料,DOPE,4004-05-1,二油酰磷脂酰乙醇胺 中文名称 :1,2-二油酰-sn-甘油-3-磷酸乙醇胺 中文别称 :二油酰磷脂酰乙醇胺 英 文 名 :DOPE 英文别称 :1,2-Dioleoyl-sn-glycero-3-phospho…

数据仓库介绍

数据仓库数据仓库的概念数据仓库的主要特征数据仓库的主流开发语言-sql结构化数据sql语句数据仓库的概念 数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。 数据仓库的目的是构建面向分析的集…

一、MyBatis-Plus简介

文章目录一、MyBatis-Plus简介1、简介2、特性3、支持数据库4、框架结构5、代码及文档地址【尚硅谷】MyBatisPlus教程-讲师:杨博超 失败,是正因你在距成功一步之遥的时候停住了脚步。 一、MyBatis-Plus简介 1、简介 MyBatis-Plus(简称 MP&am…

吴恩达【神经网络和深度学习】Week2——神经网络基础

文章目录1、Logistic Regression as a Neural Network1.1、Binary Classification1.1.1、Introduction1.1.2、Notations1.2、Logistic Regression1.3、Logistic Regression Cost Function1.4、Gradient Descent1.5、Derivatives(导数)1.6、More derivati…

基于支持向量回归(SVR)和PROSAIL模拟光谱数据的叶面积指数反演

前言本博客利用PROSAIL模型模拟出MODIS的光谱数据和LAI,然后采用支持向量回归(SVR)方法建立NDVI与LAI 的回归模型,用于LAI的反演。训练和测试数据的拟合效果还是比较好的,这表明SVR在模拟的光谱数据与LAI回归方面的可行…

NXP EMDA学习(2):串口eDMA接收和发送流程详解

在单片机中,最基础的一个驱动就是串口,本文就以NXP中串口eDMA的收发为例,通过分析源代码来理解eDMA的执行过程。 参考代码:Kinetis K64 Sub-Family SDK 2.11中的uart_edma_transfer.c 文章目录1 串口基本初始化2 DMAMUX初始化3 初…

Go语言 WaitGroup 源码知多少

前面的文章我们写协程的时候有用到 WaitGroup 我们的写法大概是这样的 func main() {...dothing()wg : sync.WaitGroup{}// 控制 多个子协程的声明周期wg.Add(xx)for i : 0; i < xx; i {go func(ctx context.Context) {defer wg.Done()...dothing()}(ctx)}...dothing()// …

【Android春招】Android基础

一、填空题 1&#xff0e;Android是基于__ 的移动端开源操作系统。 Linux 2&#xff0e;Android系统是由__公司推出的。 谷歌 3&#xff0e;Android 11对应的API编号是__。 30 4&#xff0e;App除了在手机上运行&#xff0c;还能在电脑的__上运行。 模拟器&#xff08;AVD&…

Pytorch SoftMax回归

目录 数据集 从零实现 简单实现 数据集 导入所需库 torchvision计算机视觉所用torch的库 %matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2l # 用SVG清晰度高 d2l.use_…

华为交换机OSPF对接思科交换机EIGRP,牛逼配置!

简介 思科交换机OSPF分别与华为交换机OSPF以及思科交换机EIGRP进行路由交互&#xff0c;间接实现华为交换机OSPF对接思科交换机EIGRP的功能。 配置注意事项 该案例适用于支持OSPF的华为交换机。该案例仅提供OSPF对接EIGRP的基本配置。思科交换机与华为交换机对接替换时&…

固定资产年结操作步骤 及常见问题处理:AJAB 关闭资产年度报错问题处理

目录 第一步、打开新的资产会计年度 TCODE &#xff1a; AJRW 第二步、 关闭资产年度 TCODE&#xff1a;AJAB 三、结果校验 四、 常见问题 分析 第一步、打开新的资产会计年度 TCODE &#xff1a; AJRW 输入公司编码&#xff0c;输入新的资产会计年度 先测试运行&a…

【计算机网络-数据链路层】差错控制(检错编码、纠错编码)

文章目录1 检错编码——奇偶校验码1.1 奇偶校验码1.2 相关例题2 检错编码——循环冗余码&#xff08;CRC&#xff09;2.1 发送端——生成冗余码2.2 接收端——检错2.3 相关例题3 纠错编码——海明码3.1 确定海明码的位数3.2 确定校验位的分布3.3 对校验码进行分组3.4 求出校验码…