Re: nginx загрузка файлов картинок с русскими именами с пристыкованным ;jsessionid

Maxim Dounin mdounin на mdounin.ru
Ср Май 10 12:56:29 UTC 2017


Hello!

On Wed, May 10, 2017 at 07:49:52AM -0400, akartkam wrote:

> Добрый день. Столкнулся с такой проблемой. На ubuntu сервере совместно
> работают tomcat8 и nginx 1.10. Второй проксирует запросы с первому. nginx
> настроен так : 
> 
> server {
>   listen 80;
>   server_name forpostnn.ru;
>   charset utf-8;
>   root /opt/tomcat/webapps/inShop;
> 
>   location ~* ^(/images/|/releated/).+\.(jpg|jpeg|gif|png|pdf)$  {
>         root   /usr/share/inShop/webcontent;
>         expires 30d;
>         add_header Pragma public;
>         add_header Cache-Control "public";
>         rewrite "^(.*);jsessionid=(.*)$" $1 permanent;
>   }
> 
> 
>   location / {
>         proxy_set_header X-Forwarded-Host $host;
>         proxy_set_header X-Forwarded-Server $host;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         proxy_pass http://127.0.0.1:8080/;
> 
>   }
> }
> 
> Проблема в том, что так получилось, что в папке со статическим контентом
> оказались картинки с русскими именами. При первом открытии окна в браузере
> (когда еще нет куков и tomcat пристыковывает ко всем urlам ;jsessionid) ,
> nginx не грузит картинки в именах которых есть русские буквы(естественно они
> url rwrited), говорит , 404. При чем, что  интересно, если принудительно
> открыть картинку в браузере без ;jsessionid , то все ок. Так же никаких
> проблем не возникает и с картинками, в названии которых нет русских букв.

Написанный в конфиге rewrite, по моим представлениям, не должен 
работать вообще, т.к. если в конце url'а будет ";jsessionid=...", 
то запрос не попадёт в соответствующий location.  Так что что 
именно у вас происходит - загадка, и в первую очередь непонятно, 
почему не возникает проблем с картинками без русских букв.

Попробуйте начать с простого: возьмите конкретные URL'ы, и 
посмотрите, что именно с ними происходит, и на каком именно этапе 
ломается.  Ну и посмотрите внимательно в логи nginx'а, там должно 
быть подробно написано, почему именно 404 - если её действительно 
вернул nginx.

-- 
Maxim Dounin
http://nginx.org/


Подробная информация о списке рассылки nginx-ru