【问题标题】:Nginx: How to Send to Client Result of a Python Script?Nginx:如何将 Python 脚本的结果发送到客户端?
【发布时间】:2019-11-04 07:33:42
【问题描述】:

我有一个简单的 python 脚本:它从给定的十六进制颜色生成一个x-icon,然后它返回一个有效的字节流 (BytesIO)。

我想要这样的东西(请不要笑,我正在使用Nginx大约两天):

location ~^/icons/(?<colour>[a-fA-F0-9]{6})\.ico$ {
    send 200 (./favicon.py colour); # System call to `favicon.py` with `colour` argument.
}

有可能吗?

【问题讨论】:

  • 也许this 会有所帮助

标签: python nginx system-calls nginx-location nginx-config


【解决方案1】:

以下配置应该可以完成工作:

location ~^/icons/(?<colour>[a-fA-F0-9]{6})\.ico$ {
    content_by_lua '
        local command = "./favicon.py colour"
        local handle = io.popen(command)
        local content = handle:read("*a")
        handle:close()
        ngx.print(content)
    ';
}

基本上它使用 Lua 来执行和提供内容

注意:您的 nginx 应该使用 lua 模块编译,以使此解决方案正常工作

【讨论】:

  • 如果我在Nginx中设置root/some/path./favicon.py会扩展为/some/path/favicon.py,对吧?
  • 我也收到错误missing ) in "^/icons/(?&lt;colour&gt;[a-fA-F0-9],但在我的配置中一切都是正确的:location ~^/icons/(?&lt;colour&gt;[a-fA-F0-9]{6})\.ico$
  • 1.不确定,我猜它会使用nginx进程的运行目录,但它可能是定义的root或其他东西。您可以使用完整路径。 2.我只是从你那里复制的位置,使用你需要的位置,而不是我写的那个
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多