Welcome! Log In Create A New Profile

Advanced

Re: location error, root не видит другие файлы

Maxim Dounin
October 29, 2012 08:34AM
Hello!

On Mon, Oct 29, 2012 at 08:05:15AM -0400, fura wrote:

> Всем привет.
>
> Есть страничка, которая должна показываться при ошибки, в ней есть
> картинки(img src=), css и т.д.
> Вот пример конфига:
>
> server_name mysite;
>
> error_page 404 502 /notwork.html;
>
> location /notwork.html {
> root /var/www/notwork;
> }
>
> location / {
> proxy_pass http://other_server:8080;
> }
>
>
> В файле notwork.html есть текст вида:
> <img ... src="mypics.png" ...>
> эта картинка (mypics.png) находится в директории /var/www/notwork, но не
> отображается.

Картинка не отображается, т.к. сама страница ошибки показывается
по произвольному адресу, и попытавшись разрешить относительный
путь от этого произвольного адреса - браузер гарантированно
получит неправильный результат.

> Если же сделать :
>
> error_page 404 502 /notwork;
>
> location /notwork {
> root /var/www;
> index notwork.html;
> }
>
> то тогда все картинки и файлы отображаются, но когда сайт начинает работать,
> не уходит с этого урла на location / .

А так у вас в результате попытки возврата каталога будет
перенаправление с кодом 301 на /notwork/. Пути в рамках страницы
ошибки при этом будут правильные, но исходный адрес страницы, где
был пользователь, теряется.

(Кроме того, для того, чтобы добиться того же эффекта не нужны все
эти сложности с индексным файлом и автоматическим
перенаправлением, можно сразу адрес для перенаправления в
error_page написать, но в любом случае редко когда нужно подобное
поведение при обработке ошибок.)

> Как решить данную проблему?

Правильно делать так:

Определяем обработку ошибок:

error_page 404 502 /errors/error.html;

Определяем обработку для страницы с ошибкой и файлов в ней:

location /errors/ {
root /var/www;
}

Поскольку страница с ошибкой может показываться по совершенно
разным с точки зрения браузера адресам, использование в ней
относительных адресов для вставки картинок - недопустимо.
Используем вместо этого полный путь от корня сайта:

<img src="/errors/mypics.png">

Как-то так всё должно работать.

--
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

location error, root не видит другие файлы

fura October 29, 2012 08:05AM

Re: location error, root не видит другие файлы

Maxim Dounin October 29, 2012 08:34AM

Re: location error, root не видит другие файлы

fura October 29, 2012 09:01AM

Re: location error, root не видит другие файлы

mad_boy April 11, 2013 02:56AM

Re: location error, root не видит другие файлы

mad_boy April 11, 2013 03:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 204
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready