Re: Два location со статикой
Maxim Dounin
mdounin на mdounin.ru
Вт Фев 6 14:13:09 UTC 2018
Hello!
On Tue, Feb 06, 2018 at 04:54:10PM +0300, Валентин Бартенев wrote:
> On Tuesday 06 February 2018 07:55:38 darksmoke wrote:
> > Добрый день
> > Помогите пожалуйста настроить nginx. На одном домене, два урла. Надо что бы
> > по двум урлам отдавалась разная статика.
> >
> > location /v3/ {
> >
> > location ~* \.(xsl|ico|gif|png|svg|js|css|html|ttf|woff|json|xml)$ {
> >
> > index index.html;
> >
> > root /opt/DATA/stat/otp24v3;
> >
> > expires -1;
> >
> > }
> >
> > }
> >
> >
> >
> > location / {
> >
> > location ~* \.(xsl|ico|gif|png|svg|js|css|html|ttf|woff|json|xml)$ {
> >
> > index index.html;
> >
> > access_log off;
> >
> > root /opt/DATA/stat/otp24;
> >
> > expires -1;
> >
> > }
> >
> > }
> >
> > дергаю домен/v3/ получаю 404
> >
> > В логе
> > 018/02/06 14:34:02 [error] 1338189#0: *217105 open() "/opt/nginx/html/v3"
> > failed (2: No such file or directory), cli
> > ent: 10.42.1.53, server: domain.ru, request: "GET /v3 HTTP/1.1", host:
> > "domain.ru"
> >
> > Файлы статики по путям ессть, корень отрабатывает четко, а вот v3 выдает 404
> > и не могу побороть ((
> >
>
> Очевидно, что запрос "/v3" не попадает в location /v3/, а тем более в location
> с регулярным выражением внутри него.
>
> Если вы хотите чтобы попадал запрос без слеша, то нужно убрать слеш и из location.
> А чтобы всё это работало, ещё и root в нём указать правильно.
Стоит при этом иметь в виду, что под "location /v3" (без слэша)
подпадают не только запросы к "/v3", "/v3/", и "/v3/some/file" но
и "/v3-and-some-other-chars". Так как location'ы работают по
строковому префиксу.
Так что я бы рекомендовал в подобных ситуациях писать location со
слэшом на конце, а location без слэша, если он нужен, прописывать
явно, например:
location = /v3 {
return 302 /v3/;
}
location /v3/ {
...
}
В большинстве случаев - такой отдельный "location = /v3"
оказывается не нужен, так как:
- перенаправление с /v3 на /v3/ автоматчески возвращается, если на
диске есть соответствующий каталог;
- такое же перенаправление автоматически возвращается, если в
"location /v3/" написан proxy_pass / fastcgi_pass и т.п.
Подробнее тут:
http://nginx.org/r/location/ru
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru