location + error_page + url prefixes
Igor Sysoev
is at rambler-co.ru
Sat Jan 31 12:46:14 MSK 2009
On Sat, Jan 31, 2009 at 01:36:27AM +0200, Maxim Yemelyanov wrote:
> теперь при запросе несуществующего url с любым языком выдается
> содержимое /500.html, причем если этот файл удалить, то выскакивает
> сообщение
> Status: 500 Internal Server Error Content-Type: text/html
> Application error (Rails)
>
> в пределах server-а никаких ссылок на 500.html нет
А на уровне http ?
> location /ru/ {
> error_page 500 502 503 504 /500_ru.html;
> error_page 404 = @mongrel_ru;
> }
> location @mongrel_ru {
> proxy_pass http://mongrel;
> proxy_intercept_errors on;
> recursive_error_pages on;
> error_page 404 /404_ru.html;
+ error_page 500 502 503 504 /500_ru.html;
> }
>
> вот секция location / :
>
> location / {
> if (-f $request_filename) {
> break;
> }
> if (-f $request_filename/index.html) {
> rewrite (.*) $1/index.html break;
> }
> if (-f $request_filename.html) {
> rewrite (.*) $1.html break;
> }
> if (!-f $request_filename) {
> proxy_pass http://mongrel;
> access_log /home/abp/log/nginx.offside-mongrel.access.log
> main buffer=100;
> break;
> }
> }
В вот с этим кошмаром следует поступить так: поставить 0.7.32 или
0.6.35 с патчем http://sysoev.ru/nginx/patch.try_files.0.6.35
и использовать современные нанотехнологии - try_files:
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files
location / {
try_files $uri $uri/index.html $uri.html @mongrel;
}
location @mogrel {
proxy_pass http://mongrel;
}
Скорее всего, это придётся сделать с /ru/, /en/ и просто /:
location /ru/ {
try_files $uri $uri/index.html $uri.html @mongrel_ru;
error_page 500 502 503 504 /500_ru.html;
}
location @mongrel_ru {
proxy_pass http://mongrel;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 500 502 503 504 /500_ru.html;
error_page 404 /404_ru.html;
}
location /en/ {
try_files $uri $uri/index.html $uri.html @mongrel_en;
error_page 500 502 503 504 /500_en.html;
}
location @mongrel_en {
proxy_pass http://mongrel;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 500 502 503 504 /500_en.html;
error_page 404 /404_en.html;
}
location / {
try_files $uri $uri/index.html $uri.html @mongrel;
error_page 500 502 503 504 /500.html;
}
location @mongrel {
proxy_pass http://mongrel;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 500 502 503 504 /500.html;
error_page 404 /404.html;
}
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list