<div dir="ltr"><div id="yiv1079580844yui_3_16_0_1_1438258596334_7252">Hi,</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7305"><br></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7304" dir="ltr">I am using Nginx as reverse Proxy, during testing I have noticed</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7334" dir="ltr">a situation Nginx receives response from upstream server even no request has been sent yet from Nginx side.</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7622" dir="ltr"><br></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7378" dir="ltr">The scenario is that the "Upstream Server" started to transfer data just after</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7379" dir="ltr">the connection has established without waiting to request from Nginx, Nginx receives all the response</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7380" dir="ltr">and does not send the Proxied request. <br></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7510" dir="ltr"><br></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7511" dir="ltr">I have looked in the code and realized Nginx allows to receive response even without request</div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7547" dir="ltr"><u>or</u> maybe the AND should be OR (<b class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7496"> (!u->request_sent || ngx_http_upstream_test_connect(c) != NGX_OK))</b></div><br><div id="yiv1079580844yui_3_16_0_1_1438258596334_7466" dir="ltr">static void<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7385">ngx_http_upstream_process_header(ngx_http_request_t *r, ngx_http_upstream_t *u)<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7387">{<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7389">    ssize_t            n;<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7391">    ngx_int_t          rc;<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7393">    ngx_connection_t  *c;<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7395"><br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7397">   ....<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7455"><br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7457">   <b id="yiv1079580844yui_3_16_0_1_1438258596334_7496"> if (!u->request_sent && ngx_http_upstream_test_connect(c) != NGX_OK) {<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7459">                <br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7461">        ngx_http_upstream_next(r, u, NGX_HTTP_UPSTREAM_FT_ERROR);<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7463">        return;<br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7465">    }</b></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7592" dir="ltr"><br></div><div id="yiv1079580844yui_3_16_0_1_1438258596334_7593" dir="ltr"><br></div><div class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7588" dir="ltr"><span id="yiv1079580844yui_3_16_0_1_1438258596334_7589" class="yiv1079580844">Please Advise</span></div><div class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7586" dir="ltr"><span id="yiv1079580844yui_3_16_0_1_1438258596334_7587" class="yiv1079580844">Thanks</span></div><div class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7582" dir="ltr"><span id="yiv1079580844yui_3_16_0_1_1438258596334_7585" class="yiv1079580844">Hagai Avrahami</span><b class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7496"><br class="yiv1079580844" id="yiv1079580844yui_3_16_0_1_1438258596334_7602"></b></div><br></div>