неработающий rewrite и работающий редирект

Sergey Averyanov asv at pallant-mobile.ru
Wed Oct 14 12:27:19 MSD 2009


Использую nginx/0.7.61 + modrails (aka passenger -- http://modrails.com) с 
такой конфигурацией:
    server {
        listen 80;
        server_name foo.com;
        server_name *.foo.com;
        access_log /var/log/projects/foo/nginx_access.log;

        location = /favicon.ico {
            root /srv/projects/foo/rails/public;
            access_log /var/log/projects/foo/nginx_static.log;
        }

        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|
exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {
            root /srv/projects/foo/rails/public;
            access_log /var/log/projects/foo/nginx_static.log;
        }

        location ~ ^/t?[0-9] {
            rewrite ^/(.*) /posts/show/$1;
        }

        location / {
                try_files      /foo/maintenance.html
                @foo;
        }
        location @foo {
            root /srv/projects/foo/rails/public;
            passenger_enabled on;
        }
    }


По моей логике запрос вида /25 должен быть обработан в location ~ ^/t?[0-9] и 
преобразован в /posts/show/25
На деле этого не происходит и на бэкэнд, судя по логам Rails, уходит запрос 
/25
Однако стоит в проблемном location заменить 
rewrite ^/(.*) /posts/show/$1;
на
rewrite ^/(.*) http://foo.com/posts/show/$1;
как все начинает работать как надо, только уже через редирект, а не rewrite.

В чем может быть проблема?


-- 
С уважением,
  Сергей Аверьянов


More information about the nginx-ru mailing list