Re: Nginx редиректит (301) с добавлением слэша

wilful nginx-forum at nginx.us
Wed Jun 26 07:33:19 UTC 2013


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

server {                                                                    
                                                                            
              
    listen 192.168.7.116:80;                                                
                                                                            
              
    server_name site.local www.site.local;                                  
                                                                            
              
                                                                            
                                                                            
              
    set $docroot      "/var/www/site.local/htdocs";                         
                                                                            
              
    set $pool         "backend";                                            
                                                                            
              
    set $poolerr      "127.0.0.1:8088";                                     
                                                                            
              
    set $app_env      "production";                                         
                                                                            
              
                                                                            
                                                                            
              
    index   index.php;                                                      
                                                                            
              
    charset windows-1251;                                                   
                                                                            
              
    root    $docroot;                                                       
                                                                            
              
                                                                            
                                                                            
              
    access_log /var/log/nginx/site.local-access.log;                        
                                                                            
              
    error_log /var/log/nginx/site.local-error.log warn;                     
                                                                            
              
    
    include /etc/nginx/conf-available/static;
                                                                            
                                                                            
          
    location @fetch {                                                       
                                                                            
              
        include /etc/nginx/conf-available/backend-httpd;                    
                                                                            
              
    }                                                                       
                                                                            
              
                                                                            
                                                                            
              
    location / {                                                            
                                                                            
              
        include /etc/nginx/conf-available/backend-httpd;                    
                                                                            
              
    }                                                                       
                                                                            
              
                                                                            
                                                                            
              
#    location / {                                                           
                                                                            
              
#        try_files $uri $uri/ @fetch;                                       
                                                                            
              
#        location ~ \.(php|php5)$ {                                         
                                                                            
              
#            include /etc/nginx/conf-available/backend-httpd;               
                                                                            
              
#            try_files $uri $uri/ @fetch;                                   
                                                                            
              
#        }                                                                  
                                                                            
              
#    }                                                                      
                                                                            
              
}     

Данный конфиг используется для обработки сайта на bitrix. 

Статика отдаётся так (/etc/nginx/conf-available/static):
location ~*
\.(ico|jpg|gif|png|htm|html|jpeg|swf|txt|avi|wmv|7z|tmp|xml|svg)$ {
    root $docroot;
    access_log off;
}

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

В апач есть директива отключения таких редиректов, как можно поступить в
случае nginx, чтобы обработка папки передавалась на бакэнд?

Если использовать error_page 404 @fetch; вместо try_files, то всё равно
происходит редирект.

Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Tue, Jun 25, 2013 at 11:30:46AM -0400, wilful wrote:
> 
> > http://nginx.org/ru/docs/http/ngx_http_core_module.html#try_files
> > Я не нашел в описании директивы указание на 301-й редирект.
> > Не могли бы вы более подробно написать откуда он? 
> > Я только вижу что исходя из $uri/ сервер находит папку, т.е. как я
> понимаю
> > слэш тут используется для обозначения того, что ищется папка, а не
> файл.
> 
> Если для обработки запрошеного ресурса используется модуль отдачи 
> статики, и запрошенный ресурс оказывается каталогом - то nginx 
> возвращает 301 с добавлением "/".
> 
> -- 
> Maxim Dounin
> http://nginx.org/en/donation.html
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,240329,240354#msg-240354



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