【问题标题】:Processing redirection string inside the NGINX script, is possible?在 NGINX 脚本中处理重定向字符串,可以吗?
【发布时间】:2018-08-22 02:51:19
【问题描述】:

我正在寻找一个“完整的 NGINX 解决方案”,没有中间重定向......但我需要通过“我的名称解析器”进行一些外部处理,如 execute 幻想所示:

server {
  server_name resolver.mydomain.com;
  execute xx = http://localhos:123456/myNameResolver/$request_uri;
  rewrite ^ http://www.adifferentdomain.com$xx? permanent;
}

那么,有可能做这样的事情吗?也许使用一种fastcgi_pass,但只是返回一个字符串,而不是绕过所有的HTTP解析。

【问题讨论】:

标签: redirect nginx


【解决方案1】:

好吧,你可以使用HttpLuaModule,它可以执行命令并将它们存储在需要的变量中。

location / {
  server_name resolver.mydomain.com;
  # Get response via lua script.
  set_by_lua_file $xx 'resolver-script.lua' $request_uri;
  rewrite ^ http://www.adifferentdomain.com$xx? permanent;
}

您只需要一个 Lua 脚本来执行您的请求,尝试使用您的 $request_uri 作为 arg[1]something like this,因为它被视为命令行参数

【讨论】:

  • 但是 LuaModule 和通常的 Apache 模块或 Nginx 的 fastcgi_pass 用于 PHP、Python 等有什么区别?它只是一种“语言风味”,还是 HttpLuaModule 是 Nginx 的 HTTP 处理真正的快速补充和低开销?
  • 您需要做一些网络服务器不应该做的事情,即在响应本身中嵌入第二个请求响应。这通常由某种应用程序完成,或者使用 PHP、Python 等来完成。Lua 只是一个“原生”NGINX 解决方案。
  • 操作,在讨论之前...如何将参数(在我的插图中为$request_uri)发送到$xx 使用的函数调用?
  • 是一个很好的答案(!),只是最后的检查。还有一个“原生”NGINX JavaScript Module...我可以用set_by_js_file 代替Lua 吗?还是这种魔法只有 Lua 才能提供?
  • 不完全是。查看示例部分中的their API documentation,也许它会为您的解决方案提供一些启示
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 2011-06-27
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
相关资源
最近更新 更多