我正在编写一个 nginx 模块,该模块预计会在向客户端发送回复之前加载加载远程文件。
用户在 URL 中传递一个 ID。我使用该 ID 将 URL 加载到远程文件。我的测试看起来像这样:
wget http://example.com/?id=123
id123
被转换为 URL,例如
http://other.example.com/image/cute.png
现在我需要cute.png
从我的nginx
模块中加载。我可以用一个ngx_request
或一个来做到这一点ngx_upstream
吗?我无法找到任何明确的文档来说明如何做到这一点......
更新:
我现在(终于!)找到了子请求功能:
ngx_int_t rc;
ngx_str_t uri;
ngx_http_request_t *sr;
...
/* THIS IS WHAT WAS WRONG */
ngx_str_set(&uri, "http://other.example.com/image/cute.png");
rc = ngx_http_subrequest(r, &uri, NULL, &sr, NULL, 0);
if (rc != NGX_OK) {
/* error */
}
但是,我收到以下 HTML 代码的 404 错误,而不是来自 3rd 方网站的答案:
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.10.3 (Ubuntu)</center>
</body>
</html>
我的感觉是,现在它查询我的 nginx 服务器,而不是使用外部 TCP 连接从 3rd 方网站获取文件......
知道为什么这么简单的陈述会出错吗?