nginx Compatibility

Делаем WordPress дружелюбнее к nginx

Описание Плагин предназначен для решения двух проблем: Когда WordPress обнаруживает, что используется FastCGI SAPI, код перенаправления, передаваемый в wp_redirect(), игнорируется. Таким образом, все перенаправления с кодом 301 тихо превращаются в перенаправления с кодом 302, что не очень хорошо для SEO. Если WordPress работает под управлением nginx, плагин переопределяет функцию wp_redirect(), что позволяет использовать коды перенаправления. Если WordPress [...]

← Вернуться к полной версии записи «nginx Compatibility»…

Автор: ;

RSS Комментарии к статье «nginx Compatibility» (81)  »

  1. Именно так. Спасибо!!! (ушёл посыпать голову пеплом)

  2. [...] nginx Compatibility (PHP5): for better operation behind nginx. [...]

  3. Антон

    Владимир, рассчитываю на Вашу компетентную помощь. На хостинге два сайта, настроена связка nginx+php+fast-cgi (один – на Wordpress’е, и Ваши рекомендации и плагин уже помогли с этим).
    Сайты с небольшой посещаемостью (несколько десятков человек и 100-200 страниц за сутки), и имеет место эффект своего рода холодного старта: при открытии сайта он грузится дольше, и дольше генерируется страница. Если сразу перейти на другую страницу – быстрее и отдача, и время генерации. (по вордпрессу 0.300-0.500 против двух и больше секунд, вся загрузка – порядка 3 сек против 6-7 секунд и больше после паузы). Стоит остаться на странице на минуту-полторы – всё сначала (я так понимаю – если кто-то ещё в этот момент на сайте не совершает переходы).
    То есть новые посетители и внимательные читатели получают работу сайта зримо медленнее возможной – а ресурсы, наоборот, свободны. И если, скажем, подключение eaccelerator’а и сокращает время генерации на 100-200 мс, то на фоне описанной проблемы такие вещи уже мало радуют.
    Заходя по ssh, я вижу, конечно, запущенные процессы nginx’а и php. Ресурсы, по данным панели хостинга, используются чуть больше чем наполовину по памяти, по процессам – 25-30%. Эффект не всегда резко выражен, возможно – днем сильнее, так что грешу даже на хитрости хостера (это ру-центр, 201 тариф). Можно ли с помощью настроек конфига nginx или php повлиять на эту проблему? Если да – то как, или хотя бы куда копать? Пока нашёл только диковатую рекомендацию запрашивать свою же страницу по крону раз в несколько минут.

    • А точно проблема не в медленных запросах к базе? Просто если Вы используете кэш, то причина холодного старта как раз понятна. Можно попробовать поставить SQLMon и посмотреть на запросы, возможно, что проблема там.

      А еще в Вашем тарифе есть ограничение на число одновременных соединений с MySQL (16). Получается, что в конкретный момент времени к сайту могут обращаться не более 16 пользователей (с учетом всяких wp-cron/AJAX возможно, что и меньше), последующие соединения будут ставиться в очередь. Это тоже может быть причиной тормозов.

      • Антон

        Похоже, база здесь не ограничивает. Да, кэш использую, и попробовал мониторить, там есть неоптимальные, видимо, запросы (красный цвет). Но когда поймал время генерации 2.217, то при этом SQL Monitor: Total 9 queries, time taken: 0.04014.
        Обновил страницу, выждав пару минут – опять две с копейками секунды (8 queries). Сразу F5 – получил 0.346, а результаты по базе – близкие (и те же 8 запросов), хотя и чуть быстрее.

        • Антон, обновите плагин (SQLMon). Потом обратите внимание, сколько времени занимает запрос CONNECT user:password@host/db (он, вероятно, будет самым первым).

          • Антон

            Да – первая строка, вот такие три результата для трёх последовательных запросов одной страницы: 0.0152 0.06547 0.00781. Время генерации страницы (в том же порядке):1.857 0.878 0.371, вроде бы нет корреляции.

  4. Здравствуйте! Это все прекрасно, но я не могу активировать плагин, так как сервер орет об ошибках и даже не пускает в админ-панель в принципе. Так вот, исправила по старому методу файл plagable, ошибка с исчезла, но зато теперь сервер кричит Parse error: syntax error, unexpected $end in /home/web/2005711/home/d2005711-2/www/wp/wp-includes/pluggable.php on line 1754
    Это самая последняя строка и в этой строке пусто. Положила ссылку на горе-вордпресс с этой ошибкой в пункт «ваш сайт».
    Помогите, пожалуйста понять, в чем дело, о чем просить хостера, а что можно сделать самой.

    С уважением.

    • Владимир, спосибо Вам огромное, что откликнулись и помогли! Без Вас я бы никогда не догадалась до таких мелких и важных деталей, котрые вы мне подсказали!! Огромное Вам спасибо, профессиональных успехов! И пусть Вас ценят!!

      С уважением,
      Наталия

  5. Спасибо за плагин.
    Единственно что стоит добавить что на более новых nginx, благодаря более продуманным default-конфигам, для реализации permalinks достаточно нескольких строк:

    [-]
    View Code nginx configuration
            location / {

                    ...    
                   
            if (!-e $request_filename) {
                rewrite ^.*$ /index.php last;
            }
           
            location ~ /$|\.php {
                fastcgi_pass php-fpm-upstream;
                include fastcgi.conf;
            }

        }
    • Игорь Сысоев не одобряет такой подход.

    • PS — в чём соль использования FPM? Возможно, что я его готовить не умею, но он у меня падал при нагрузке с завидным постоянством. Ну и память хорошо кушал, если каждому клиенту заводить свой пул процессов (кстати, реализовали ли уже динамическое создание процессов?).

      • на некоторых ОС (типа Cent OS) – приходится использовать именно FPM :( даже несмотря на падения (причем сервер может жить месяцами, а потом перейти в режим постоянных падений.. правда из этого состояния он выходит самостоятельно *ROLF* )

        На FreeBSD просто супер работает через Spawn-fcgi и не работает толком FPM..

        • Александр, а для чего вообще используете FPM? Для запуска пулов php с правами конкретных пользователей? Или есть другие причины?

  6. Юрий

    Здравствуйте Владимир. Не нашел ваших контактов.
    Нужна платная консультация по настройке wp на nginx и корректной работе плагина wp file cache с nginx. Если это возможно стукните мне пожалуйста в скайп ftyuriy. Спасибо!

  7. Stephen

    Hi,

    Thanks for the plugin, its a big help.

    Quick question. I have Nginx with Wordpress 3.0.4 (which was a previous wordpress-mu install, i.e. multi-site) but its not in the root of the web directory.

    I can’t seem to get https://ict.example.com/wordpress-mu/exampleblog/xmlrpc.php to work, it should go to https://ict.example.com/wordpress-mu/xmlrpc.php?blog=exampleblog I think, but not sure.

    Any help would be greatly appreciated! Also it would be very helpful if you included a a page in your plugin which generated server blocks or location blocks or just done a quick test to tell you how correct your Nginx config is.

    Thanks,
    Stephen

  8. Jeff

    Vladimir,

    Do you have any suggestions for making the OpenID plugin from http://wordpress.org/extend/plugins/openid work? I am using nginx and fpm with your suggested nginx configuration and things are very good except that I can’t figure out how to make that plugin work. It keeps redirecting to /index.php/openid/server and 404ing. All help appreciated…thank you.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «nginx Compatibility»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा