lua使用resty.http做nginx反向代理(https请求,docker容器化部署集群),一个域名多项目转发

下载使用
链接:https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg
提取码:htay
–来自百度网盘超级会员V5的分享

在根目录下执行:
# 从 github 上下载文件
git clone https://github.com/ledgetech/lua-resty-http.git
# 将 lua-resty-http/lib/ 下的 resty 文件夹上传至服务器一下目录下(lua-5.4.2安装目录下)
/lua-5.4.2/
# 此模块主要用来发送 http 请求
# 也可选用 socket.http

在这里插入图片描述
ad_load.lua文件

ngx.header.content_type="application/json;charset=utf8"
local cjson = require("cjson")
local https = require 'resty.http'
local json = cjson:new()
--服务器一,域名拼接request_uri获得请求的路由和路由上的参数
-- local server_one_url = 'http://127.0.0.1:9059/index01';
-- local server_one_url = 'http://127.0.0.1:9059'..ngx.var.request_uri;
local server_one_url = ngx.var.url_ip..':'..ngx.var.url_port..ngx.var.request_uri;
local server_one_code = 'ONE_CODE';
-- ngx.say(server_one_url)
-- ngx.exit(ngx.OK)--http get 请求方法
local function http_get(url)local http = https:new()local res, err = http:request_uri(url, {method = 'GET',headers = {['Content-Type'] = 'application/json';}})if res.status == 200 thenngx.say(res.body)else-- ngx.say(res.status)ngx.say('服务器错误!')end
end-- http post 请求方法
local function http_post(url, data)local http = https:new()local res, err = http:request_uri(url, {method = 'POST',body = data,headers = {['Content-Type'] = 'application/json';}})if res.status == 200 thenngx.say(res.body)elsengx.say('服务器错误!')end
end-- ngx.say(server_one_url)
-- ngx.say(ngx.var.request_method)
-- ngx.exit(ngx.OK)
if ngx.var.request_method == "GET" then--解析参数并做转发http_get(server_one_url)
elseif ngx.var.request_method == "POST" then--获取请求参数ngx.req.read_body()local data = ngx.req.get_body_data()--解析参数并做转发http_post(server_one_url, data)
end
    location / {if ($server_port = 9058 ) {# 定义使用内网ip,定义请求端口set $url_ip 'http://127.0.0.1';set $url_port '9059';content_by_lua_file /lua-5.4.2/ad_load.lua;}}

在这里插入图片描述

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

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

相关文章

计算机网络——数据链路层-媒体接入控制-静态划分信道(频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM)

目录 频分复用FDM 时分复用TDM 波分复用WDM 码分复用CDM 练习1 码分多址的应用举例 练习2 本篇我们介绍媒体接入控制的其中一类方法——静态划分信道 首先介绍信道复用的基本概念, 复用(Multiplexing)是通信技术中的一个重要概念&a…

SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器

场景 Mybatis-Plus(简称MP)是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性, 所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。MyBatis 增强工具包,简化 C…

强化学习入门

强化学习是指智能体通过不断试错的方式进行学习,利用与环境进行交互时获得的奖励或惩罚来指导行为 试错学习 尝试(决策-decision)错误结果:每次尝试无论产生什么样的结果,都会对下一次结果产生影响 奖励(…

使用elasticsearchdump迁移elasticsearch数据实战

目录 1.安装nodejs 2.安装elasticsearchdump 3.迁移 4.核对数据 5.注意事项 1.安装nodejs https://ascendking.blog.csdn.net/article/details/135509838 2.安装elasticsearchdump npm install elasticdump -g 3.迁移 elasticdump --inputhttp://用户:密码源ES地址/源…

Springboot 子工程构建完后无法找到springboot依赖

问题: 构建完子工程后无法找到SpringBootTest 解决方案: 最好用这个构建 https://www.cnblogs.com/he-wen/p/16735239.html 1.先观察项目目录 是否正确 2.观察子工程目录 3.看pom.xml中是否引用springboot依赖 4.检查代码 查看父项目是否包含子模块 查看子模块的父项目是否…

vscode 中配置 python 虚拟环境

vscode 中配置 python 虚拟环境 Start 在编写代码的过程中,我们经常会用到一些第三方依赖,帮助我们快速完成功能。在 Python 中,默认情况都是统一安装在全局环境中,但是这样伴随着电脑项目越来越多,不同项目对依赖的…

【LeetCode算法题】数组经典题目分析

系列文章目录 【LeetCode算法题】各类基础排序算法的Python实现 【LeetCode算法题】数组经典题目分析 文章目录 系列文章目录前言一、二分查找(704)二、移除元素(27)三、有序数组的平方(977)四、长度最小…

Intel Quartus II IP之DP1.4 工程的创建与使用

前述: Win10电脑安装了Quartus 21.4,这可以满足绝大多数情况,但是对于创建DMI/DP IP的设计demo工程时会报错,因为还需要Eclipse与WSL(Windows Subsystem for Linux)。 具体安装方法参考: Int…

Redis与DB数据一致性-个人总结

缓存读写策略: Cache-Aside Pattern 读缓存: 先查询缓存,存在则返回, 如果不存在则查询DB, 再塞回缓存中,最后返回结果. 写缓存: 更新完成DB之后,删除缓存. 适合场景: 读比较多的场景,更新比较少的场景. 像我们工作当中&#…

R语言【paleobioDB】——pbdb_strata_auto():通过部分名称或前缀返回多个地质地层的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_strata_auto (...) Arguments 参数【...…

redis7部署集群:包含主从模式、哨兵模式、Cluster集群模式等三种模式

前言: redis部署集群常见的一般有三种模式:主从模式,Sentinel(哨兵模式),Redis Cluster(高可用Cluster集群),根据不同的需求可自定义选择部署方式。 Redis 主从模式&…

c# 视频播放之Vlc.DotNet.Forms

先说下优缺点 优点:与电脑无关,能播放主流编码格式视频。 缺点:只能播放本地视频,网络视频播放不了。 下面是具体操作和代码 1. 安装Vlc.DotNet.Forms 和 VideoLAN.LibVLC.Windows Vlc.DotNet.Forms 是播放库,Vid…

C语言所有字符串函数举例如何使用

strcpy: 将一个字符串复制到另一个字符串中 char source[] "Hello"; char destination[10]; strcpy(destination, source);strcat: 将一个字符串连接到另一个字符串的末尾 char str1[20] "Hello"; char str2[] "World"; strcat(str1, str2)…

三网话费余额查询的API系统,基于thinkphp6.0框架,附带搭建教程

系统用的是Thinkphp6.0框架 PHP版本需要用8.2 搭建教程 1、源码上传后,吧运行目录改为 /public 2、然后吧 数据库文件.sql 这个文件导入到数据库内 3、打开/config/database.php目录文件,然后进行配置数据库信息 4、挂任务计划,用处&…

运输层协议

运输层是OSI模型中的第四层,主要负责提供端到端的通信服务,包括错误检测、纠错、流量控制和拥塞控制等。以下是一些与运输层相关的常见协议: TCP(Transmission Control Protocol): 描述:TCP是一…

未来的NAS:连接您的数字生活

未来的NAS:连接您的数字生活 引言 网络附加存储(Network Attached Storage,简称NAS)是一种通过网络连接的存储设备,用于集中存储和共享数据。传统的NAS设备通常包含一个或多个硬盘驱动器,可以通过局域网连…

【python】学习笔记01

一、基础语法 1. 字面量 - 什么是字面量? 在代码中,被写下来的的固定的值,称之为字面量。 - 常用的值类型 Python中常用的有6种值(数据)的类型。 666 13.14 "程序员"print(666) print(13.14) print(&qu…

服务器变矿机,该如何应对?

开始 恶意的挖矿程序会导致服务器cpu的异常占用&#xff0c;很让人讨厌。起初&#xff0c;我只是使用top命令显示出占用cpu不正常的进程&#xff0c;发现其中一个进程占用了百分之九十九点几&#xff0c;然后通过kill -9 <PID>命令干掉它。但总是过不了几天&#xff0c;…

C++三剑客之std::variant(二):深入剖析

目录 1.概述 2.辅助类介绍 2.1.std::negation 2.2.std::conjunction 2.3.std::is_destructible 2.4.std::is_object 2.5.is_default_constructible 2.6.std::is_trivially_destructible 2.7.std::in_place_type和std::in_place_index 3.原理分析 3.1.存储分析 3.2.…

Jira 宣布Data Center版涨价5%-15%,6年内第8次提价

近日&#xff0c;Atlassian官方面向合作伙伴发布2024年涨价通知&#xff1a; 自2024年2月15日起&#xff0c;旗下核心产品Jira Software、Confluence、Jira Service Management的DC版本&#xff08;Data Center版本&#xff09;价格提高5%-15%&#xff08;涨幅与坐席数阶梯相关…