gpt4 book ai didi

nginx - nginx中重写uri和set变量语句的关系

转载 作者:行者123 更新时间:2023-12-04 08:40:35 25 4
gpt4 key购买 nike

我试图找到 nginx location 块中的 rewrite 语句和 location 块中的 set variable 语句之间的关系。为什么我问是因为以下两种情况下的不同行为
什么不起作用 - 获取 http 500 作为 url 未设置 - 在重写语句之后设置时*

location ~ ^/offer/ {
log_by_lua_file lua/datadog/api_latency.lua;
proxy_pass $url;
proxy_read_timeout 60;
rewrite ^((?U).*)(/?)$ $1 break;
set $location_name offer;
set $url https://example.com;
}
什么有效 - 当设置在重写语句之前
location ~ ^/offer/ {
log_by_lua_file lua/datadog/api_latency.lua;
proxy_pass $url;
proxy_read_timeout 60;
set $url https://example.com;
rewrite ^((?U).*)(/?)$ $1 break;
set $location_name offer;
}
在 nginx 调试日志中,我可以看到 set 变量在工作情况下执行,但不在非工作情况下执行。如果有任何关系,我已经在 nginx 文档中搜索过 - 我能得到的最好结果是这两个都是在重写阶段执行的,但没有关于此行为原因的其他信息。
知道为什么会这样吗?

最佳答案

来自 the documentation :

break

stops processing the current set of ngx_http_rewrite_module directives as with the break directive;


两者 rewriteset指令由 ngx_http_rewrite_module 实现.
这些语句在 location 中按顺序进行评估。堵塞。 break (单独或作为 rewrite...break 的一部分)将在当前上下文中停止处理。所以任何 set后面的指令将被忽略。

关于nginx - nginx中重写uri和set变量语句的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64586802/

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