Добрый день!<br><br>Настраивал кеширование сайта на wordpress с помощью модуля ngx_http_fastcgi_module, но столкнулся с некоторыми проблемами.<br>Проблемы связаны с тем, что сайт использует адреса страниц с русскими буквами. Чтобы управлять кешированием со стороны wordpress используется плагин nginx-helper, для работы которого необходимо чтобы при обращении на адрес <a href="http://example.com/purge/news/001">http://example.com/purge/news/001</a> очищался кеш страницы <a href="http://example.com/news/001">http://example.com/news/001</a> (и то же самое при наличии аргументов). <br>
<br>Это удалось настроить таким образом, как показано ниже в конфиге и оно работает для всех адресов, кроме тех, в которых есть русские буквы. Проблема заключается в том, что страницы с русскими адресами попадают в кеш с ключём, где uri закодирован в виде %D0%B8%D0%BC%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B, а когда я пытаюсь очистить кеш такой страницы по адресу /purge/имя_страницы, в выделение  location ~ /purge(/.*) попадает незакодированный uri "имя_страницы" и очистить кеш не получается - т.к. я неправильно обращаюсь к странице по ключу.<br>
<br>Я перепробывал уже множество вариантов с различными переменными, но так и не получил нужного результата. Возможно есть какое-нибудь элегантное решение проблемы?<br><br><br>Linux example 2.6.32-042stab049.7 #1 SMP Thu Mar 1 18:03:05 MSK 2012 x86_64 GNU/Linux<br>
nginx version: nginx/1.2.6<br><br>конфиг:<br><br>fastcgi_cache_path /tmp/fcgi levels=1:2 keys_zone=MAGE:32m max_size=64m inactive=10h;<br><br>server {<br>    listen        80;<br>    server_name    <a href="http://example.com">example.com</a> <a href="http://www.example.com">www.example.com</a>;<br>
    charset        utf-8;<br>    error_log off;    access_log off;<br>   <br>    root /home/user/<a href="http://example.com">example.com</a>;<br>    index index.php index.html index.htm;<br>   <br>    set $no_cache 0;<br>
<br>    # POST requests and urls with a query string should always go to PHP<br>    if ($request_method = POST) {<br>        set $no_cache 1;<br>    }  <br><br>    if ($query_string != "") {<br>        set $no_cache 0;<br>
    }  <br><br>    # Don't cache uris containing the following segments<br>    if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {<br>
        set $no_cache 1;<br>    }  <br><br>    # Don't use the cache for logged in users or recent commenters<br>    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {<br>
        set $no_cache 1;<br>    }<br>    <br>    location / {<br>        # This is cool because no php is touched for static content.<br>        # include the "?$args" part so non-default permalinks doesn't break when using query string<br>
        try_files $uri $uri/ /index.php?$args;<br>    }<br>    # all other .php files<br>    location ~ \.php$ {<br><br>        try_files $fastcgi_script_name =404;<br>        include fastcgi_params;<br>        fastcgi_pass unix:/var/run/fpm-v.sock;<br>
       <br>        fastcgi_cache_bypass $no_cache;<br>        fastcgi_no_cache $no_cache;<br><br>        fastcgi_index index.php;<br>        fastcgi_intercept_errors off;<br>        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>
        fastcgi_temp_path  /tmp/fcgi2 1 2;<br>        fastcgi_cache  MAGE;<br>        fastcgi_cache_key "$scheme$request_method$host$request_uri";<br>        fastcgi_ignore_headers  "Cache-Control" "Expires" "Set-Cookie";<br>
        fastcgi_cache_min_uses  1;<br>        fastcgi_cache_valid  30m;<br>        fastcgi_cache_use_stale  updating error timeout invalid_header http_500;<br>    }<br><br>    location ~ /purge(/.*) {<br>        #default_type text/plain;<br>
        #echo "fastcgi_cache_purge MAGE $scheme$request_method$host$1$is_args$args";<br>        #echo "fastcgi_cache_key $scheme$request_method$host$request_uri";        <br>        fastcgi_cache_purge MAGE "$scheme$request_method$host$1$is_args$args";<br>
    }   <br><br>    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {<br>        access_log off;    log_not_found off; expires max;<br>
    }<br><br>}<br>