nginx Compatibility
Делаем WordPress дружелюбнее к nginx
Описание Плагин предназначен для решения двух проблем: Когда WordPress обнаруживает, что используется FastCGI SAPI, код перенаправления, передаваемый в wp_redirect(), игнорируется. Таким образом, все перенаправления с кодом 301 тихо превращаются в перенаправления с кодом 302, что не очень хорошо для SEO. Если WordPress работает под управлением nginx, плагин переопределяет функцию wp_redirect(), что позволяет использовать коды перенаправления. Если WordPress [...]
← Вернуться к полной версии записи «nginx Compatibility»…
Автор: Vladimir;
Комментарии к статье «nginx Compatibility» (81) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «nginx Compatibility»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Именно так. Спасибо!!! (ушёл посыпать голову пеплом)
[...] nginx Compatibility (PHP5): for better operation behind nginx. [...]
Владимир, рассчитываю на Вашу компетентную помощь. На хостинге два сайта, настроена связка 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, вроде бы нет корреляции.
[...] 2.9.2, standard Kubrick theme, nginx Compatibility plug-in [...]
Здравствуйте! Это все прекрасно, но я не могу активировать плагин, так как сервер орет об ошибках и даже не пускает в админ-панель в принципе. Так вот, исправила по старому методу файл plagable, ошибка с исчезла, но зато теперь сервер кричит Parse error: syntax error, unexpected $end in /home/web/2005711/home/d2005711-2/www/wp/wp-includes/pluggable.php on line 1754
Это самая последняя строка и в этой строке пусто. Положила ссылку на горе-вордпресс с этой ошибкой в пункт «ваш сайт».
Помогите, пожалуйста понять, в чем дело, о чем просить хостера, а что можно сделать самой.
С уважением.
Владимир, спосибо Вам огромное, что откликнулись и помогли! Без Вас я бы никогда не догадалась до таких мелких и важных деталей, котрые вы мне подсказали!! Огромное Вам спасибо, профессиональных успехов! И пусть Вас ценят!!
С уважением,
Наталия
Спасибо за плагин.
Единственно что стоит добавить что на более новых nginx, благодаря более продуманным default-конфигам, для реализации permalinks достаточно нескольких строк:
...
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 с правами конкретных пользователей? Или есть другие причины?
Здравствуйте Владимир. Не нашел ваших контактов.
Нужна платная консультация по настройке wp на nginx и корректной работе плагина wp file cache с nginx. Если это возможно стукните мне пожалуйста в скайп ftyuriy. Спасибо!
[...] nginx Compatibility [...]
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
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.