【问题标题】:How to get the variable from api and define in Nginx config file如何从 api 获取变量并在 Nginx 配置文件中定义
【发布时间】:2021-07-05 11:20:54
【问题描述】:

我正在使用 GET api,其中有一个动态参数(变量)。我想获取该变量并将其提供给我的 Django 服务器,但是我如何在 Nginx 中解决这个问题,因为我有一个静态 api 位置。

我点击 api 的代码: 这里 waterQuantity 是由用户提供的变量。

http.Response response =await http.get('http://192.168.0.110/openValveConst/$waterQuantity');

这是我现在的 Nginx 配置文件:

location /openValveConst/ {
                    # why should i add / at the end 5000/ to make it work 
                proxy_pass          http://127.0.0.1:8000/openValveConst/?format=json
                proxy_set_header    X-Forwarded-For $remote_addr;
            }

请提出我应该做的更改以完成这项工作。

【问题讨论】:

    标签: django nginx


    【解决方案1】:

    你不能在单片服务器中做到这一点(至少没有灵活性),即使你做了某种方式,你可能想要重新加载配置并即时重启 nginx,这又是使用 pexpect 或子进程。

    虽然您可以尝试像 docker 这样的微型容器,但您可以通过 YML/JSON/docker 文件有效地更改配置。

    底线是你可以有一个烧瓶项目 API(或你喜欢的 django),它从 API 获取配置(或者如果使用 python 项目作为 API 调用者并不难,你甚至可以使用 cURL)和一旦你得到更新的配置,你更新 docker 文件并使用更新的配置放置一个新的构建,我个人更喜欢使用微容器来进行这种动态使用。

    【讨论】:

    • 谢谢好先生的建议,我会尝试实现这个,但这是一项必须尽快完成的紧迫任务,我对像docker这样的微型容器知之甚少。感谢您的帮助。
    【解决方案2】:

    我不确定,但由于每个以openValveConst/ 开头的请求都会发送到您的 django 应用程序,因此您只需在 django 应用程序中指定与查询匹配的路由:

    urlpatterns = [
        # other routes ...
        path('openValveConst/<int:waterQuantity>/', your_view)
    ]
    

    【讨论】:

    • 感谢您的回复,但在这种情况下,我应该在 Nginx 配置文件的 proxy_pass 属性中写什么,因为应该有一个变量。例如:proxy_pass 127.0.0.1:8000/openValveConst/some_value/?format=json。什么会代替 some_value??。感谢您的帮助。
    • 你不需要在那里写任何东西,你在 nginx 配置中的 /openValveConst/ 假定对以 /openValveConst/ 开头的端点的请求将被重定向到 django
    猜你喜欢
    • 2013-01-04
    • 2020-10-01
    • 2019-07-27
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多