首页 > 解决方案 > 可以使用 nginx 位置指令发送 http 请求吗?

问题描述

也许这是微不足道的,但我没有找到任何有意义的东西或者我不知道在哪里看......

(如何)是否可以在请求某个路径后立即发送 curl /what 命令?

沿着这些思路,但这实际上会起作用:

location / {
curl --data 'v=1&t=pageview&tid=UA-XXXXXXXX-X&cid=123&dp=hit'  https://google-analytics.com/collect
}

标签: httpnginxcurlmeasurement-protocol

解决方案


(正如评论中指出的),ngx_http_lua_module可以做到!

location / {
          access_by_lua_block  {
            os.execute("/usr/bin/curl --data 'v=1&t=pageview&tid=UA-XXXXXXXX-X&cid=123&dp=hit'  https://google-analytics.com/collect >/dev/null 2>/dev/null") 
        }
}

请注意,执行会暂停页面加载,直到 curl 完成。在后台运行 curl 并立即继续页面加载,&在末尾添加一个空格和一个,看起来像

>/dev/null 2>/dev/null &")

推荐阅读