首页 > 系统相关 >nginx+lua配置

nginx+lua配置

时间:2024-09-10 17:04:00浏览次数:9  
标签:lua -- 配置 nginx token proxy local

nginx中可以配置
`
-- lua校验配置
location ^~/lua/ {
default_type 'text/html';
access_by_lua_file /usr/local/nginx/conf/access.lua;
}

-- 重定向配置
location ^~/toRedirect/ {
proxy_pass http://目标ip:目标端口/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}

access.lua内容
-- url转义
function encodeURIcomponent(s)
s = ngx.escape_uri(s); -- 转义
-- 按照端口要求替换字符
s = string.gsub(s, "\+", "%20");
s = string.gsub(s, "\%21", "!");
s = string.gsub(s, "\%27", "'");
s = string.gsub(s, "\%29", "(");
s = string.gsub(s, "\%7E", "~");
return s;
end;

local token = ngx.req.get_uri_args()["token"];

if token == nil then
return ngx.exit(403);
end;

local zhttp = require "resty.http";

local httpc = zhttp.new();

-- ip和端口是nginx的,这里需要再通过nginx进行访问
local url = 'http://ip:端口/checkToken?token=' .. token;

local res, err = httpc:request_uri(url, {
keepalive_timeout = 20000 -- 毫秒

});

local starts, ends = string.find(res.body, "200");

if starts == nil then
return ngx.exit(403);
else
-- 转发
local token = encodeURIcomponent(ngx.req.get_uri_args()["token"]);
local targetPath = encodeURIcomponent(ngx.req.get_uri_args()["targetPath"]);
-- ip和端口是nginx的,这里需要再通过nginx进行访问
local tourl = "http://ip:端口/toRedirect?token=".. token.. "&targetPath=".. targetPath;

ngx.redirect(tourl);
end;
`

标签:lua,--,配置,nginx,token,proxy,local
From: https://www.cnblogs.com/ayad/p/18406603

相关文章

  • Unreal 配置插件依赖另一个插件
    例如:插件A依赖插件B1、把两个插件都放到项目Plugins文件夹下2、修改插件A的A.uplugin文件,添加如下片段"Plugins":[{"Name":"B","Enabled":true},...]3、修改插件A跟插件B的加载时间设置打开A.uplugin,设置加载时间为Default"Mo......
  • fnm安装及配置,Linux中实现node版本管理
    fnm安装及配置,Linux中实现node版本管理源码:Schniz/fnm:......
  • Scala在IDE中如何配置运行
    一、新建项目二、添加项目结构三、创建Scala类创建一个Object类,编写一个简易程序如下......
  • Linux+Nginx部署Vue项目
    1.配置nodejs环境下载nodejswgethttps://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz解压nodejstarxfnode-v12.18.1-linux-x64.tar.xz修改/etc/profile文件,再最下面加上exportPATH=$PATH:/root/node-v12.18.1-linux-x64/bin使/etc/profile文件立即生效source/et......
  • React路由配置参考(记录)
    整体:登录页单独处理:将登录页单独处理,路径为/login。使用AuthLayout处理授权页面:AuthLayout可以作为一个高阶组件,确保用户登录后才能访问系统中的其他页面。加载主布局BasicLayout:BasicLayout可以用来加载系统的主布局,并通过routesRender(routesConfig)渲染配置文件中......
  • Vue+SpringBoot项目 服务器上Nginx反向代理WebSocket
    问题首先说下为什么需要做反向代理websocket,因为我的websocket是部署在后端项目中的,前端是vue部署到服务器后之后配置了ssl,前端页面访问就是带有https的,然而后端地址还是http,这就导致使用ws://url去连接后端服务器会出现以下问题然后将访问方式更改为wss://url进行访问,此时的ur......
  • oracle配置SGA参数不当导致不能正确启动数据库实例处理
    原因:生成环境数据库想要增加数据库内存配置参数SGA_TARGET增加到42G,但是没有配置SGA_MAX_SIZE参数值,导致SHUTDOWNIMMEDIATE停止数据库,再STARTUP启动数据库是提示错误:ORA-00823:Specifiedvalueofsga_targetgreaterthansga_max_size。处理思路:根据现有的spfile生成非二进制......
  • Ignite系列之2-xml如何配置代码部署
    一、Ignite代码部署属性配置除了对等类加载之外,还可以通过配置UriDeploymentSpi部署用户代码。使用这种方法,可以在节点配置中指定库文件的位置。Ignite会定期扫描该位置,并在类文件有变更时重新部署。该位置可以是文件系统目录或HTTP(S)位置。当Ignite检测到库文件已从该位置删......
  • 掌握生成树 (STP、RSTP、MSTP) 最详细配置,轻松优化网络
    目录一.实验内容STP配置实验RSTP配置实验MSTP配置实验二.1)STP配置实验实验拓扑​编辑实验配置实验结果2)RSTP配置实验实验拓扑实验配置实验结果3)MSTP配置实验实验拓扑实验配置​编辑实验结果三实验总结一.实验内容1)STP配置实验2)RSTP......
  • 【运维自动化-配置平台】平台管理功能如何使用
    蓝鲸智云配置平台,以下简称配置平台配置平台里的平台管理功能是管理员的一些操作,比如一些全局纬度的设置1、全局配置-业务通用业务快照名称:通常不需要修改,保持平台搭建好默认业务(蓝鲸)即可拓扑最大可见层级:可根据实际业务场景自定义调整,需要注意的是,这个是全局的调整,针对每个......