Nginx+LUA实现动态反向代理

Nginx+lua通过url传参的方式实现动态代理 需求大致如下:通过url传参的方式,让Nginx代理到不同的服务器 浏览器输入:http://127.0.0.1/remote?port=8081被代理到:http://192.168.108.2:8081 立即下载

前言

作者本人使用的是远程开发的模式,所以会用到DNS解析服务,和LUA脚本

本地通过 Hyper-V 安装了一个 Ubuntu 虚拟机,并在虚拟机中安装了一些 Docker 服务。

然后通过路由转发将容器路由转发到宿主机,相当于是将容器做成了一个个服务器。

然而,尴尬的是,为了能够提升服务效率,我将代码都放在了虚拟机中。开发的方式也是远程开发,但这个时候,调试的时候出错了。

因为 PHP 是通过端口传递 DEBUG 内容的。虚拟机中监听了 9000 端口,宿主机通过访问了容器服务,容器发现宿主机的 9000 端口没开,也就不会传递 DEBUG 信息。就算传递了,因为宿主机(相对虚拟机)的IP和虚拟机的IP不一致,也不会 DEBUG 成功。

环境

  • Windows
  • Hyper-V
  • Ubuntu20.04
  • Nginx
  • Docker
  • PHP

注意点

思考

既然直接跳过了虚拟机,访问了容器。

那么宿主机(相对虚拟机)直接给域名绑定虚拟机的IP,然后,虚拟机做一层转发,就可以做到这件事情。

问题

既然是做转发,就需要写一堆的 nginx 配置,那有没有一种只需要设置一次的呢?

之前已经做了 DNS 服务,现在可以利用起来。

Nginx配置

因为需要通过 DNS 服务获取域名对应的真实IP地址,那么就需要编写相关脚本。

而对于 Nginx 最适合的应该就是 LUA 了。

安装 Lua 扩展

由于 Nginx 是通过 apt install 的形式安装的,那就可以直接通过 apt install 安装 lua 扩展。

sudo apt install libnginx-mod-http-lua -y

编写 lua

这里是通过 dig 命令解析服务的 IP 地址。

# 192.168.137.128 是之前搭建的 DNS 服务
sudo tee /etc/nginx/proxy.lua <<- 'EOF'
local f = io.popen("dig +short @192.168.137.128 " .. ngx.var.host, "r")
ngx.var.backend = "http://" .. string.gsub(string.gsub(f:read("*a"), "\n", ""), "\r", "")
f:close()
EOF

编写 conf

X-Forwarded-For 必须设置为虚拟机IP

sudo tee /etc/nginx/conf.d/proxy.conf <<- 'EOF'
server {
    listen 80;
    server_name *.angelalign.com;

    location / {
        set $backend '';
        rewrite_by_lua_file /etc/nginx/proxy.lua;
        proxy_pass $backend;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For 192.168.137.128;
    }
}
EOF

重载Nginx

sudo service nginx reload

最后

打完收工。

DEBUG 可以用了,服务也正常。

Nginx中使用Lua脚本配置示例 主要介绍了Nginx中使用Lua脚本配置示例,本文以一个Lua拦截器为例讲解如何配置使用Lua脚本,需要的朋友可以参考下 立即下载

相关推荐

Delphi 13 Beta初体验:手把手教你安装RAD Studio Ganymede,并实测新条件运算符

本文详细介绍了Delphi 13 Beta(代号Ganymede)的安装步骤和新特性,重点解析了新增的条件运算符语法。通过实测对比,展示了64位IDE的性能提升和新语法在代码简洁性上的优势,为开发者提供了从安装到实战的完整指南。

weixin_30399821的博客 205

nginx使用lua文件动态代理websocket

创建的websocket服务,可以直接使用http://192.168.11.199:21899/访问,如下 但现在不想对外暴露websocket的端口号,通过nginx反向代理:待访问的url为http://192.168.11.199:81/?destip=192.168.11.199:21899 destip参数即为websocket服务的ip与port 一、第一次的nginx.conf配置如下 1.1、nginx.conf location / { ...

无痕的博客 2800

《LangChain技术原理剖析:OpenAI Function Calling的实践与应用》

,"unit": {},name:函数的唯一标识符:自然语言描述,决定LLM如何选择该函数parameters:定义输入参数的完整Schema。

qq_62223405的博客 980

【转】基于nginx + lua实现的反向代理动态更新

大家都知道,nginx是当前应用非常广泛的web服务器,热度因为他的高并发高性能高可靠性,且轻量级!牛逼的不行,不多说这些。 今天要介绍的是,如何基于nginx和lua脚本,也就是在openresty的环境下,实现动态的反向代理逻辑,有一个开关控制。开关控制反向代理工作在nginx原生的upstream的模式,还是工作在lua控制的动态代理模式。 动态代理的服务器,通过http请求实现灵活...

weixin_30872157的博客 1973

Qwen2.5-VL模型微调实战:从零到部署的完整流程(附避坑指南)

本文详细介绍了Qwen2.5-VL视觉语言模型从零开始的完整微调与部署流程。内容涵盖使用LLaMA-Factory进行LoRA微调的关键参数配置与避坑指南,以及如何将训练好的模型权重合并,并最终利用vLLM高性能推理引擎进行部署,为开发者提供了一套可落地的实战方案。

oo7890的博客 592

江科大笔记—OLED调试工具

OLED介绍及调试工具

m0_62005595的博客 658

Nginx 下 Lua 的实现机制(二)

目录 一、init_by_lua 二、init_worker_by_lua 三、set_by_lua 四、rewrite_by_lua 五、access_by_lua 六、content_by_lua 七、header_filter_by_lua 八、body_filter_by_lua 九、log_by_lua 十、balancer_by_lua_block 一、in...

潘广宇的博客 5637

人脸关键点定义汇总

前几天看一份代码临时需要找49个人脸关键点位置定义的图片发现怎么百度都搜不到,最后幸好谷歌可以使用了就用谷歌搜到了。所以在这里汇总一下我所知道的人脸关键点的定义和相关的一点东西,以备不时之需。 68个关键点 最常用的工具是Dlib,网址:http://dlib.net/ dlib的68个特征点检测算法是ERT算法【1】 使用dlib检测68个特征点的python示例见:http://dlib.n...

程序媛 7642

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

【代码】lua使用resty.http。

qq_34631220的博客 1397

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 514

使用 Pfam 和 InterProScan 进行蛋白质家族和功能域的分析

本文介绍了使用Pfam和InterProScan进行蛋白质家族与功能域分析的方法。主要内容包括:1) Pfam数据库的本地化使用,通过hmmscan工具比对Pfam-A.hmm数据库,并提供了批量处理Python脚本;2) InterProScan的安装配置与命令行参数详解,支持多数据库整合分析;3) 补充介绍了基于curl的Uniprot在线查询方法。文章提供了从软件安装到实战分析的完整流程,适用于本地化、批量化蛋白质功能注释需求,特别是无网络环境或大规模数据分析场景,适合不同水平的生物信息学用户。

Protein Designer的博客 1918

探索 Lua-Upstream-Nginx-Module: 提升 Nginx 反向代理性能的新篇章

探索 Lua-Upstream-Nginx-Module: 提升 Nginx 反向代理性能的新篇章 在现代 Web 应用架构中,Nginx 以其高效、轻量级和强大的反向代理能力,被广泛应用于服务端负载均衡和流量控制。而 是一个增强版的上游模块,它允许你在 Nginx 中使用 Lua 脚本动态配置上游服务器,进一步扩展了 Nginx 的功能和灵活性。 项目简介 Lua-Upstream-Nginx...

gitblog_00051的博客 925

把 sy-* 带进 ABAP CDS:ABAP 7.50 里的环境信息新姿势($session 与 @Environment.systemField 实战)

摘要:ABAP 7.50在CDS视图中引入两种获取环境信息的方式:1)直接使用$session会话变量读取用户、客户端和系统语言;2)通过@Environment.systemField注解参数,由Open SQL自动注入系统字段。$session方式简单但依赖Open SQL访问路径,非ABAP环境下可能失效;注解参数方案更工程化,依赖关系明确且支持测试。建议ABAP体系内优先使用$session,对外接口采用参数化方案。两种方式各有适用场景,正确选择可避免潜在风险。(148字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 152

基于 Nginx 的动态代理

整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

A1867350的博客 1056

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

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lua脚本拓展nginx功能

文章目录一、nginx介绍1、定义2、优点3、使用场景二、lua介绍1、定义2、优点3、使用场景三、nginx中使用lua四、lua API介绍五、demo举例 一、nginx介绍 1、定义 Nginx 作为一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。 2、优点 占用内存少,稳定性高、模块化 3、使用场景 网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器,高并发大流量站点常用来做接入层的负载均衡,还有非常常见的用法是作为日志采集

隔壁老王呀的专栏 1114

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Nginx实现反向代理、负载均衡、动静分离

Nginx的反向代理是指Nginx作为服务器的前端,接收客户端的请求,然后将请求转发给后端的真实服务器,并将真实服务器的响应返回给客户端。这种代理方式使得客户端并不知道真实服务器的存在,它只与Nginx进行交互。

pythontxt的博客 3261

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Nginx学习笔记——下篇

前面课程已经将Nginx的大部分内容进行了讲解,我们都知道了Nginx在高并发场景和处理静态资源是非常高性能的,但是在实际项目中除了静态资源还有就是后台业务代码模块,一般后台业务都会被部署在Tomcat,weblogic或者是websphere等web服务器上。那么如何使用Nginx接收用户的请求并把请求转发到后台web服务器?步骤分析: 环境准备(Tomcat) 浏览器访问: 获取动态资源的链接地址: 本次课程将采用Tomcat作为后台web服务器(1)在Centos上准备一个Tomcat (2)准备一个

m0_45364328的博客 731

OpenResty & Nginx:详细对比与部署指南

Nginx 和 OpenResty 都是高性能的 Web 服务器和反向代理服务器,但它们有着不同的特性和应用场景。Nginx 是一个轻量级的、高性能的 HTTP 和反向代理服务器,而 OpenResty 是基于 Nginx 的集成软件平台,增强了 Nginx 的功能,特别是通过嵌入 Lua 脚本支持来实现灵活的 Web 应用开发。Nginx 和 OpenResty 都是强大的 Web 服务器,各有其优点和适用场景。

web13595609705的博客 2918

nginx作为反向代理修改服务端响应包的header头

nginx.conf配置如下(要求必须支持lua语言)

zd1320732的专栏 1236

OpenResty中的Lua脚本:如何用Nginx+Lua构建高性能Web应用

本文深入探讨了如何利用OpenResty平台,通过Nginx与Lua脚本的结合构建高性能Web应用。文章详细解析了其底层原理与执行模型,并提供了API网关、动态反向代理等核心实战用例,帮助开发者在网络边缘实现灵活业务逻辑与极致性能的统一。

book8的博客 922

Nginx Lua脚本动态拦截恶意爬虫对IndexTTS 2.0的攻击

针对IndexTTS 2.0等高耗能AI接口频繁遭受爬虫攻击的问题,采用Nginx结合Lua脚本在反向代理层实现动态防护。通过UA特征识别与IP频次统计,毫秒级阻断恶意请求,有效降低GPU资源消耗。方案无需额外中间件,兼容现有架构,适合中小团队快速部署,兼顾性能与灵活性。

weixin_42311427的博客 1334

Nginx从初级到高级的玩法

本博文主要介绍了Nginx从入门到熟悉的玩法,从Nginx快速安装-配置解读-文件服务器的配置-accesslog日志统计挖掘-站点访问量和高频url统计,到Nginx负载均衡玩法-兜底数据返回-浏览器跨域配置-服务端缓存配置-静态资源压缩,再到高级玩法之https认证-OpenResty下载限速-keepAlived高可用,全程实操配置+截图,通俗易懂~

点滴记忆,分享成长之路 2215

PaaS 7层动态路由的若干实现

随着Docker的出现,PaaS、CaaS(Container As A Service)、甚至DCOS(DataCenter OS)呈现了爆发式的发展。而在PaaS中,因为实例一般默认为动态IP,对于7层调用(比如http请求),需要7层动态路由获取应用域名(或虚IP)和后端实例的映射关系,以提供7层服务;而对于4层调用(比如rpc调用),可以通过动态LVS或名字服务(或基于zookeeper/...

karamos的专栏 201

nginx插件ngx_lua

ngx_lua是淘宝的维护的产品,真心不错。配置文件包含可以做很多事情的lua脚本。 公司有个产品对注册的广告盒子进行反向代理,这样可以在盒子上做很多事情:和服务器通信,远程控制盒子等等。nginx反向代理这些盒子,都是在nginx的配置文件里边配置的。这个配置是要用程序进行生成。越来越多的程序没办法安置了,越来越多。终于在配置文件超过了260多个的时候,出现了超出了bucket。。。。这又要修...

weixin_34306446的博客 117
上一篇: Docker设置DNS
下一篇: Jira统计工时
IMJCW
博客等级 码龄10年 13粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值