Re[2]: О заголовке content-type

2018-02-19 Пенетрантность CoDDoC
А... голова дырявая. Забыл про types.
Спасибо.

>Понедельник, 19 февраля 2018, 19:26 +03:00 от Maxim Dounin 
>:
>
>Hello!
>
>On Mon, Feb 19, 2018 at 06:18:52PM +0300, CoDDoC wrote:
>
>> Доброе время суток!
>> 
>> Есть такой локейшен:
>> location ~ "^/img/" { internal; }
>> 
>> Естественно, прямой запрос 'GET /img/file.jpg' получает 404
>> Все хорошо, но нужно вместо стандартной nginx страницы отдать кастомную.
>> Можно решать разными способами, я решил попробовать через 'return 404 
>> ' (минимум внутренних реврайтов/редиректов).
>> 
>> Получилось так (упрощенно):
>> 
>> error_page 404 = @err404;
>> location @err404 {
>>   return 404 ' WTF ? 
>>';
>>   add_header "Content-Type" "text/html; charset=UTF-8" always;
>> }
>> 
>> Оно работает, одно смущает: дублирование заголовка Content-Type: сперва 
>> 'image/jpeg', затем уже 'text/html; charset=UTF-8'
>> Браузер-то, ясное дело, возьмет по итогу второй заголовок. Но, может, есть 
>> какой-либо цивилизованный способ оставить один Content-Type без 
>> прикручивания костыля типа headers-more ?
>
>Правильно - не пытаться прибить левый Content-Type гвоздями с 
>помощью add_header, а задать его штатными средствами.  Например 
>так:
>
>error_page 404 = /error404.html;
>location = /error404.html {
>charset utf-8;
>return 404 ' ...';
>}
>
>Или, если по каким-то причинам очень хочется именно именованный 
>location, то так:
>
>error_page 404 = @err404;
>location @err404 {
>types {}
>default_type text/html;
>charset utf-8;
>return 404 ' ...';
>}
>
>-- 
>Maxim Dounin
>http://mdounin.ru/
>___
>nginx-ru mailing list
>nginx-ru@nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru


--
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: О заголовке content-type

2018-02-19 Пенетрантность Maxim Dounin
Hello!

On Mon, Feb 19, 2018 at 06:18:52PM +0300, CoDDoC wrote:

> Доброе время суток!
> 
> Есть такой локейшен:
> location ~ "^/img/" { internal; }
> 
> Естественно, прямой запрос 'GET /img/file.jpg' получает 404
> Все хорошо, но нужно вместо стандартной nginx страницы отдать кастомную.
> Можно решать разными способами, я решил попробовать через 'return 404 ' 
> (минимум внутренних реврайтов/редиректов).
> 
> Получилось так (упрощенно):
> 
> error_page 404 = @err404;
> location @err404 {
>   return 404 ' WTF ?  
>   ';
>   add_header "Content-Type" "text/html; charset=UTF-8" always;
> }
> 
> Оно работает, одно смущает: дублирование заголовка Content-Type: сперва 
> 'image/jpeg', затем уже 'text/html; charset=UTF-8'
> Браузер-то, ясное дело, возьмет по итогу второй заголовок. Но, может, есть 
> какой-либо цивилизованный способ оставить один Content-Type без прикручивания 
> костыля типа headers-more ?

Правильно - не пытаться прибить левый Content-Type гвоздями с 
помощью add_header, а задать его штатными средствами.  Например 
так:

error_page 404 = /error404.html;
location = /error404.html {
charset utf-8;
return 404 ' ...';
}

Или, если по каким-то причинам очень хочется именно именованный 
location, то так:

error_page 404 = @err404;
location @err404 {
types {}
default_type text/html;
charset utf-8;
return 404 ' ...';
}

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

О заголовке content-type

2018-02-19 Пенетрантность CoDDoC
Доброе время суток!

Есть такой локейшен:
location ~ "^/img/" { internal; }

Естественно, прямой запрос 'GET /img/file.jpg' получает 404
Все хорошо, но нужно вместо стандартной nginx страницы отдать кастомную.
Можно решать разными способами, я решил попробовать через 'return 404 ' 
(минимум внутренних реврайтов/редиректов).

Получилось так (упрощенно):

error_page 404 = @err404;
location @err404 {
  return 404 ' WTF ?  
  ';
  add_header "Content-Type" "text/html; charset=UTF-8" always;
}

Оно работает, одно смущает: дублирование заголовка Content-Type: сперва 
'image/jpeg', затем уже 'text/html; charset=UTF-8'
Браузер-то, ясное дело, возьмет по итогу второй заголовок. Но, может, есть 
какой-либо цивилизованный способ оставить один Content-Type без прикручивания 
костыля типа headers-more ?

proxy_hide_header не годится - нет проксирования. Отправлять все 
"не-пойми-какие" запросы на бэкенд - не вижу в этом  особого смысла.

Спасибо.
--___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru