gpt4 book ai didi

Nginx Lua 脚本

转载 作者:行者123 更新时间:2023-12-04 23:23:44 27 4
gpt4 key购买 nike

Nginx 的一个真正酷的地方是,您可以通过在请求处理的各个阶段注入(inject) Lua 脚本来控制它的行为。我已经成功地使用 rewrite_by_lua/file 指令来检查传入请求的主体,并为 PHP 的下游处理注入(inject)额外的请求 header 。例如

location /api{
rewrite_by_lua_file "/path/to/rewrite.lua";
lua_need_request_body "on";

然后在rewrite.lua

local uri = ngx.var.request_uri;
//examine the URI and inject additional headers
ngx.req.set_header('headerName','headerValue');

在此阶段我可以做的是注入(inject)响应 header 。例如

local cookieData = "cookieName=value;path=/;";    
ngx.header['Set-Cookie'] = cookieData;

到目前为止没有问题,但这不是我想要做的。我想到的工作流程是这样的

  • 检查 URI 并注入(inject)额外的请求 header 。
  • 我的 PHP 脚本检查额外的请求 header ,根据需要处理传入的数据,并且可能注入(inject)额外的响应 header
  • 然后我想检查另一个 Nginx Lua 脚本中的响应 header 并在那个阶段注入(inject) cookie。

通过我的 PHP 脚本注入(inject)额外的响应 header 完全没有问题。我认为为了检查那些额外的 header ,我只需要设置

location /api {
header_filter_by_lua_file "path/to/header.lua";
}

header.lua 做类似的事情

local cookieData = "cookieName=value;path=/;";    
ngx.header['Set-Cookie'] = cookieData;

这个原则听起来很完美。但是,我发现我的 header_filter_by_lua_file 指令被忽略了——当我重新加载配置时,Nginx 日志中没有报告任何错误。

我一定是在这里做错了什么,但我看不出它可能是什么。我在 Ubuntu 14.10 (x64) 上使用 nginx 1.6.2。 Nginx 已通过 apt-get install nginx-extras 安装。

如果有人能够解释如何使 header_filter_by_* 正常运行,我将不胜感激。

最佳答案

这不是 vanilla nginx 的特性。你需要安装 openresty(而不是 nginx)。

参见 http://openresty.org/#Download然后 http://openresty.org/#Installation

关于Nginx Lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com