<div dir="auto"><div dir="ltr"><div>Hello Dmitry,</div><div><br></div><div>Thanks for your answer. I understand locations can be configured to proxy to external locations and therefore be used in subrequests from njs. That is what I am doing for now. I consider this to be a workaround. Before I explain why, I should explain the basics of my pet project. You can think of it as a service to which you post the URL of an RSS feed and I expect the server to retrieve the feed, collect all the articles in parallel (using subrequests) and concatenating the result in my response.</div><div>Therefore, the URLs I need to query are not known in advance. And, if I am not mistaken, that forces me to use a variable as argument for my proxy_pass, just like I mentioned in my first email:</div><div>    location = /fwd-proxy {<br>        proxy_pass $arg_tgt;<br>    }</div><div>Because of that, my understanding is that the external requests are performed using HTTP/1.0 and in particular the connection(s) to the external sources are not kept alive, making the initiator "pay" for the TCP connection establishment on every single request. Am I mistaken in my understanding ?</div><div><br></div><div>Of course, all this is fine as long as I play in my sandbox and with servers that I can reach with low latency, but I'm concerned if this becomes an actual service one day.<br></div><div><br></div><div>Thanks for your precious help,</div><div><br></div><div>Antoine.<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Nov 19, 2018 at 2:28 PM Dmitry Volyntsev <<a href="mailto:xeioex@nginx.com" target="_blank" rel="noreferrer">xeioex@nginx.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi Antoine,<br>
<br>
 >Is there any plan to have subrequest from ngx_http_js_module support<br>
 > external URLs ?<br>
<br>
Nothing prevents you from making subrequests to external URLs.<br>
<br>
<a href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass" rel="noreferrer noreferrer" target="_blank">https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass</a><br>
<a href="https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver" rel="noreferrer noreferrer" target="_blank">https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver</a><br>
<br>
 >The address can be specified as a domain name or IP address<br>
..<br>
 >In this case, if an address is specified as a domain name, the name is <br>
searched among the described server groups, and, if not found, is <br>
determined using a resolver.<br>
<br>
You still need a location to make a proxy_pass for you (what you already <br>
have).<br>
<br>
As Valentine said, there is nothing special in ngx_http_js_module about <br>
subrequests. The module simply uses internal NGINX API for subrequests <br>
(<a href="http://hg.nginx.org/njs/file/tip/nginx/ngx_http_js_module.c#l2099" rel="noreferrer noreferrer" target="_blank">http://hg.nginx.org/njs/file/tip/nginx/ngx_http_js_module.c#l2099</a>).<br>
<br>
You, can find a more complex example of using njs subrequests here: <br>
<a href="https://github.com/nginxinc/nginx-openid-connect" rel="noreferrer noreferrer" target="_blank">https://github.com/nginxinc/nginx-openid-connect</a><br>
<br>
</blockquote></div></div>