<HTML><BODY>Ааааа... голова дырявая. Забыл про types.<br>Спасибо.<br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Понедельник, 19 февраля 2018, 19:26 +03:00 от Maxim Dounin <mdounin@mdounin.ru>:<br>
        <br>
        <div id="">




        
                
        



        



        



        



        



        



        



        

















        




























        





















































        


































        



        
                
        

















































        



        




































        











































        











































        















        




















































































        






        
        









        
        
        
        
        
                
                
                
                
        








































        
        

        
                
                
                
                
        

        

        
        
        



        






















        
        
        
        
        
        
        
        







































        





        
        
        
        
        
        
        
        





        



        



































        
































<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
            <div id="style_15190575650000000119_BODY">Hello!<br>
<br>
On Mon, Feb 19, 2018 at 06:18:52PM +0300, CoDDoC wrote:<br>
<br>
> Доброе время суток!<br>
> <br>
> Есть такой локейшен:<br>
> location ~ "^/img/" { internal; }<br>
> <br>
> Естественно, прямой запрос 'GET /img/file.jpg' получает 404<br>
> Все хорошо, но нужно вместо стандартной nginx страницы отдать кастомную.<br>
> Можно решать разными способами, я решил попробовать через 'return 404 <text>' (минимум внутренних реврайтов/редиректов).<br>
> <br>
> Получилось так (упрощенно):<br>
> <br>
> error_page 404 = @err404;<br>
> location @err404 {<br>
>       return 404 '<!DOCTYPE html> <html> <body> <h1> <center> WTF ? </center> </h1> </body> </html>';<br>
>       add_header "Content-Type" "text/html; charset=UTF-8" always;<br>
> }<br>
> <br>
> Оно работает, одно смущает: дублирование заголовка Content-Type: сперва 'image/jpeg', затем уже 'text/html; charset=UTF-8'<br>
> Браузер-то, ясное дело, возьмет по итогу второй заголовок. Но, может, есть какой-либо цивилизованный способ оставить один Content-Type без прикручивания костыля типа headers-more ?<br>
<br>
Правильно - не пытаться прибить левый Content-Type гвоздями с <br>
помощью add_header, а задать его штатными средствами.  Например <br>
так:<br>
<br>
    error_page 404 = /error404.html;<br>
    location = /error404.html {<br>
        charset utf-8;<br>
        return 404 '<!DOCTYPE html> ...';<br>
    }<br>
<br>
Или, если по каким-то причинам очень хочется именно именованный <br>
location, то так:<br>
<br>
    error_page 404 = @err404;<br>
    location @err404 {<br>
        types {}<br>
        default_type text/html;<br>
        charset utf-8;<br>
        return 404 '<!DOCTYPE html> ...';<br>
    }<br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" target="_blank">http://mdounin.ru/</a><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br data-mce-bogus="1"></div>
            
        
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>--<br></BODY></HTML>