<div dir="ltr">Thanks a lot! It's working. I had underscore in header which was causing unexpected behavior as such headers get ignored.<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 4, 2019 at 6:25 PM Dmitry Volyntsev <<a href="mailto:xeioex@nginx.com">xeioex@nginx.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On 04.06.2019 14:00, <a href="http://naidile.pn" rel="noreferrer" target="_blank">naidile.pn</a> wrote:<br>
> What does api write=on; mean ? Could you please explain.<br>
> <br>
<br>
<br>
api is a plus-only nginx module <br>
(<a href="http://nginx.org/en/docs/http/ngx_http_api_module.html" rel="noreferrer" target="_blank">http://nginx.org/en/docs/http/ngx_http_api_module.html</a>).<br>
<br>
You do not need this to make subrequests.<br>
<br>
<br>
> On Tue, Jun 4, 2019 at 4:26 PM <a href="http://naidile.pn" rel="noreferrer" target="_blank">naidile.pn</a> <<a href="http://naidile.pn" rel="noreferrer" target="_blank">http://naidile.pn</a>> <br>
> <<a href="mailto:naidilepn@gmail.com" target="_blank">naidilepn@gmail.com</a> <mailto:<a href="mailto:naidilepn@gmail.com" target="_blank">naidilepn@gmail.com</a>>> wrote:<br>
> <br>
>     Hi Dmitry,<br>
> <br>
>     I tried subrequest. But it doesn't work. Nginx is trying find the<br>
>     API within /var/www/html folder.<br>
<br>
<br>
Can you elaborate more what are you trying to do?<br>
<br>
See the config below as an example:<br>
<br>
-----------------<br>
http {<br>
     js_include proxy.js;<br>
     js_set $summary summary;<br>
     js_set $prop prop;<br>
<br>
     # proxy server<br>
<br>
     server {<br>
         listen       8080;<br>
         server_name  localhost;<br>
<br>
         location / {<br>
             js_content proxy;<br>
         }<br>
<br>
         location = /_prop {<br>
             internal;<br>
             proxy_pass <a href="http://127.0.0.1:8090" rel="noreferrer" target="_blank">http://127.0.0.1:8090</a>;<br>
         }<br>
<br>
         location = /_proxy {<br>
             internal;<br>
             proxy_set_header Prop $prop;<br>
             proxy_pass http://127.0.0.1:8070$request_uri;<br>
         }<br>
     }<br>
<br>
     # prop server<br>
<br>
     server {<br>
         listen       8090;<br>
<br>
         location / {<br>
             return 200 '{"prop": "WAKA"}';<br>
         }<br>
     }<br>
<br>
     # dest server<br>
<br>
     server {<br>
         listen       8070;<br>
<br>
         location / {<br>
             return 200 $summary;<br>
         }<br>
     }<br>
}<br>
<br>
-----------------<br>
function proxy(r) {<br>
        r.subrequest("/_prop", reply => {<br>
                if (reply.status != 200) {<br>
                        r.return(500);<br>
                        return;<br>
                }<br>
<br>
                r.variables.prop = JSON.parse(reply.responseBody).prop;<br>
                r.subrequest("/_proxy", res => {<br>
                        r.return(res.status != 200 ? 500 : 200,<br>
                                         res.responseBody);<br>
                })<br>
        });<br>
}<br>
<br>
function summary(r) {<br>
        var s = "JS summary\n\n";<br>
<br>
     s += "Method: " + r.method + "\n";<br>
     s += "HTTP version: " + r.httpVersion + "\n";<br>
     s += "Host: " + r.headersIn.host + "\n";<br>
     s += "Remote Address: " + r.remoteAddress + "\n";<br>
     s += "URI: " + r.uri + "\n";<br>
<br>
     s += "Headers:\n";<br>
<br>
     for (var h in r.headersIn) {<br>
         s += "  header '" + h + "' is '" + r.headersIn[h] + "'\n";<br>
     }<br>
<br>
        return s;<br>
}<br>
<br>
var prop = (r) => r.variables.prop;<br>
-----------------<br>
curl <a href="http://127.0.0.1:8080/test" rel="noreferrer" target="_blank">http://127.0.0.1:8080/test</a><br>
JS summary<br>
<br>
Method: GET<br>
HTTP version: 1.0<br>
Host: <a href="http://127.0.0.1:8070" rel="noreferrer" target="_blank">127.0.0.1:8070</a><br>
Remote Address: 127.0.0.1<br>
URI: /test<br>
Headers:<br>
  header 'Prop' is 'WAKA'<br>
  header 'Host' is '<a href="http://127.0.0.1:8070" rel="noreferrer" target="_blank">127.0.0.1:8070</a>'<br>
  header 'Connection' is 'close'<br>
  header 'User-Agent' is 'curl/7.64.0'<br>
  header 'Accept' is '*/*'<br>
<br>
-----------------<br>
<br>
> <br>
>     And, with proxy_pass within subrequest, I'm not able to pass the<br>
>     request headers and body. Kindly help here.<br>
</blockquote></div>