<HTML><BODY>Привет.<br><div><div id="style_13636621800000000456"><div id="style_13636621800000000456_BODY"><div><div id="style_13636620790000000207"><div id="style_13636620790000000207_BODY"><br>Есть такая конфигурация.<br><br>    location / {<br>        proxy_pass <a href="http://0:5000;" target="_blank">http://0:5000;</a><br>    }<br><br>    location = /404 {<br>        root /tmp/nginx;<br>        error_page 404 /404.html;<br>        return 404;<br>    }<br><br>    location ~* \.(html)$ {<br>        root /tmp/nginx;<br>        error_page 404 /404.html;<br>    }<br><br>Бекенд возвращает ответ с "X-Accel-Redirect: /404".<br>/404 каталога нет и срабатывает error_page 404 и возвращается /404.html страница с 404 HTTP статусом.<br><br>Теперь добавим впереди memcached:<br><br>    location / {<br>        set $memcached_key "test:$uri";<br>        memcached_pass unix:/tmp/memcached.sock;<br>        default_type text/html;<br>        error_page 404 = @fallback;<br>    }<br><br>    location @fallback {<br>        proxy_pass <a href="http://0:5000;" target="_blank">http://0:5000;</a><br>    }<br><br>    location = /404 {<br>        root /tmp/nginx;<br>        error_page 404 /404.html;<br>        return 404;<br>    }<br><br>    location ~* \.(html)$ {<br>        root /tmp/nginx;<br>        error_page 404 /404.html;<br>    }<br><br>И в такой конфигурации, когда бекенд возвращает ответ с "X-Accel-Redirect: /404",<br>то nginx отдает не /404.html страницу, а свою внутреннюю.<br><br>Если же делать сразу "X-Accel-Redirect: /404.html", то не будет 404 статуса.<br><br>Какое есть решение для этой ситуации?<br><br>Кстати, вызов memcached можно даже убрать, достаточно оставить цепочку из двух error_page.<br>Такое ощущение, что если в процессе обработки запроса использовался именованный локайшен, то уже не обычные возврата нет.<br><br><br>
</div>
                        
                
                
        </div>

        
</div>



<br><hr>
</div>
                        
                
                
        </div>

        
</div>



<br><hr></BODY></HTML>