<div dir="ltr"><div><span style="line-height:1.5">Имеется конфигурация: nginx 1.8.1, </span><span style="line-height:1.5">X-Accel-Redirect + try_files $uri @upstream</span><br></div>Своими словами - нужно отдавать через x-accel-redirect файлы, которые могут лежать или на локальном диске или на другом сервере.<br>Приложение устанавливает заголовки X-Accel-Redirect и Content-Type.<div><br><div>Ожидаемое поведение: заголовок Content-Type будет без изменения передан клиенту.</div><div>Наблюдаемое поведение: в<span style="line-height:1.5"> случае, если происходит proxy_pass на upstream, то клиенту передаётся заголовок Content-Type полученный от upstream.</span></div><div><br></div><div>Я решил эту проблему добавив proxy_hide_header Content-Type; к location @filestorage.<br>Я нашёл в документации такое утверждение:</div><div><a href="https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/">https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/</a><br><br>Note that the following HTTP headers aren’t modified by NGINX:</div><div><br>Content-Type<br>Content-Disposition<br>Accept-Ranges<br>Set-Cookie<br>Cache-Control<br>Expires<br><br>Хочу выяснить у знатоков, является ли данное поведение nginx верным, или это баг?<br><br>Выдержка из конфига:<br><br> location /internal/ {<br> internal;<br><br> alias /home/user/fs/;<br> try_files $uri @filestorage;<br> }<br><br> location @filestorage {<br> rewrite ^/internal(/.*)$ $1 break;<br><br> proxy_pass <a href="http://storage/">http://storage</a>; # to upstream<br> proxy_read_timeout 90;<br> proxy_connect_timeout 90;<br> proxy_redirect off;<br><br> proxy_set_header Host $host;<br> proxy_set_header X-Real-IP $remote_addr;<br> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br><br> # proxy_hide_header Content-Type; # preserves content-type for x-accel-redirect<br><br> proxy_next_upstream http_404;<br> }<br><br><br><br><br><br><br><br><br style="color:rgba(0,0,0,0.870588);font-family:'Roboto Slab','Times New Roman',serif;font-size:14px;line-height:19px;white-space:pre-wrap;background-color:rgb(250,250,250)"></div></div></div>