кэширование, или помогите понять (построить) логику

amberbam nginx-forum на nginx.us
Сб Сен 25 07:15:10 MSD 2010


Здравствуйте, уважаемые гуру.

Помогите пожалуйста разобраться с
построением конфига, потому что уже
мозги кипят, откровенно говоря..
Имеется друпал и форум на пхпбб -
[code]
server {
.....
        location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }

# для imagecache реврайтец
        location ~ /sites/default/files/imagecache/ {
            try_files $uri /index.php?q=$uri;
        }

# скрипты форума не кэшируем вообще
        location ~ /forum/.*\.php$ {
                error_page      407 @nocache;
                try_files       @nocache =407;
        }

        location @nocache {
            try_files                $uri =404;
            fastcgi_pass        backend;
            include                  /etc/nginx/fastcgi_params;
            fastcgi_param      SCRIPT_FILENAME 
/var/www/$host/htdocs$fastcgi_script_name;
        }

# все другие php-скрипты будем
кэшировать, походу это друпал с 90%
вероятностью
        location ~ \.php$ {
            try_files                $uri =404;
            fastcgi_pass        backend;
            fastcgi_param     SCRIPT_FILENAME 
/var/www/$host/htdocs$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
                                                           
            fastcgi_cache root;                            
            fastcgi_cache_key бла-бла-бла
            fastcgi_cache_.......
        }

# отдельно для форума кое-че таки
кэшируем, картинки, стили...
        location ~ (регулярка) {
                                
            try_files      $uri =404;
            fastcgi_pass        backend;
            fastcgi_param  SCRIPT_FILENAME 
/var/www/$host/htdocs$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
            
            fastcgi_cache phpbbfiles;
            fastcgi_cache_то-се
            fastcgi_cache_.......
        }

.......
}
[/code]

Вот...
Вся эта конструкция, не смотря на ее
кривость в некоторых местах (например
@nocache =407, но мне локейшн @nocache еще будет
нужен, а как туда иначе перейти в этой
ситуации я так и не понял), вполне себе
работает как нужно, если бы не одно но -
наличие магазина и еще кое-какого
контента, который кэшировать ну никак
нельзя.
Добавляю например -
location ~ /catalog {
 и вот тут нужно бы сделать реврайт для
чистых ссылок, то есть перекинуть на
/index.php?q=$uri&$args...  Вот тут я и перестал
понимать как добиться этого. Банальный
rewrite сюда если вписать, то оно все равно
будет кэшировать, потому как php у нас
определено выше. Вписать реврайт в
секцию server тоже не получится, так как
там не один друпал.. Ситуация еще
усугубляется тем, что мне нужно будет
вставить еще кучу limit_req, то есть
наклепать еще множество локейшнов, при
этом я хочу чтобы локейшн для "общего
.php" таким и оставался как сейчас, что бы
не плодить тонны деректив....
Фактически я написал было конфиг, да он
получился настолько огромный и не
уклюжий, что мне его не то что тут
стыдно показывать, а даже страшно на
сервер заливать.

Прошу вашей помощи. Разъясните
начинающему, как правильно писать
подобные конфигурации. Да и вообще что
тут у меня не так, потому как мне
кажется что непременно что-то не так (я
всего неделю как nginx кручу)..

С уважением....

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




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