ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Настройка rewrite для статичных файлов



Здравствуйте, akor.

Вы писали 13 декабря 2012 г., 21:31:30:

> Здравствуйте!

> Не судите строго, если некорректно задаю вопрос, новичок.
> Есть VPS, со связкой apache + nginx (+ fastCGI);


> Как правильно настраивать редиректы и рерайты при таких исходных данных?

> Нужно чтобы uri вида /dirname/param правильно обрабатывались, то есть чтобы
> nginx понимал, что param - это не папка, в которой лежит файл index.html, а
> параметр, который затем надо передать Парсеру.


1 вариант: Вы явно описываете все каталоги статики, которые у вас имеются на 
сайте, как отдающиеся
напрямую, остальное сливаете на Парсер:

server {
    listen 123.123.123.123:80;

    root /var/www/vhosts/domain.com/httpdocs/;

    #По умолчанию - на парсер
    location / {
        proxy_pass http://127.0.0.1:7080;
        ...
    }

    #Статика
    location /js/ {}
    location /css/ {}
    location /img/ {}
    location ^~ /upload/ {}         <----- обратите внимание на ^~
    location /robots.txt {}
    location /favicon.ico {}
    location /other.file {}
    location /and.another.file {}
    location /again.and.again.other.file {}

    location ~* \.(php|html)$  {
        proxy_pass http://127.0.0.1:7080;
        ...
    }
    ...
}

Использование ^~ 
http://nginx.org/ru/docs/http/ngx_http_core_module.html#location - по
вкусу, запретит проверку регулярных выражений, как следствие запрос 
/upload/malware.php исполняться
как код - не будет, полезно "для недоверенных" каталогов, куда "пользователи" 
могут заливать файлы.


2 Вариант - использовать try_files  
http://nginx.org/ru/docs/http/ngx_http_core_module.html#try_files
Явно описывать каталоги статики при этом, тем не менее, рекомендуется.

server {
    listen 123.123.123.123:80;

    root /var/www/vhosts/domain.com/httpdocs/;

    #На парсер
    location / {
        try_files $uri @parser;
        ...
    }

    #Статика
    location /js/ {}
    location /css/ {}
    location /img/ {}
    location ^~ /upload/ {}         <----- обратите внимание на ^~
    #location /robots.txt {}
    #location /favicon.ico {}
    #location /other.file {}
    #location /and.another.file {}
    #location /again.and.again.other.file {}

    location @parser {
        proxy_pass http://127.0.0.1:7080;
        ...
    }

    location ~* \.(php|html)$  {
        proxy_pass http://127.0.0.1:7080;
        ...
    }
    ...
}


-- 
С уважением,
 Pavel                          mailto:pavel2000@xxxxxx

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.