WordPress: заменяем Apache mathopd’ом
Дружим WordPress и mathopd
Вторая статья из серии "WordPress: Заменяем Apache лёгким web-сервером".
Первая статья была посвящена nginx, в данной статье разберём особенности конфигурирования mathopd и WordPress для совместной работы.
В Ubuntu/Debian нам понадобится пакет libfcgi0ldbl, содержащий программу cgi-fcgi, которую mathopd использует в качестве обёртки для FastCGI:
Или можно попробовать собрать обёртку с исходников.
Как и в прошлом случае, мы предполагаем, что PHP в режиме FastCGI прослушивает 9000 порт на 127.0.0.1
Port 80
Address 0.0.0.0
Virtual {
Host example.com
Control {
Alias /
Location /var/www/example.com
ScriptUser nobody
External {
"/usr/bin/cgi-fcgi -bind -connect 127.0.0.1:9000" { .php }
}
}
}
}
Особенностью работы под mathopd является то, что он не предоставляет функциональности для переписывания адресов (как mod_rewrite в Apache), поэтому пермалинки будут всего лишь "Almost Pretty".
При тестировании данной конфигурации обнаружилась одна интересная особенность, которую, вероятно, стоит считать ошибкой mathopd: если демон web-сервера слушает нестандартный (не 80) порт, то WordPress уходит в вечный цикл редиректов.
Причина здесь в следующем: mathopd, в отличие от других серверов, не добавляет порт в переменную $_SERVER["HTTP_HOST"]. Таким образом, для example.com:8080 $_SERVER["HTTP_HOST"] в mathopd будет example.com (nginx, например, укажет значение example.com:8080).
В WordPress есть интересная процедура — redirect_canonical, которая пытается привести URL к каноническому виду (типа, SEO friendly). В ней есть интересные строки:
- if ( !$requested_url ) {
- // build the URL in the address bar
- $requested_url = ( !empty($_SERVER['HTTPS'] ) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
- $requested_url .= $_SERVER['HTTP_HOST'];
- $requested_url .= $_SERVER['REQUEST_URI'];
- }
В случае mathopd и http://example.com:8080/, $requested_url будет установлен в http://example.com/. Так как форма этого URL не будет совпадать (из-за того, что порт потерялся) с формой, хранимой в базе данных, WordPress сделает перенаправление на http://example.com/, и так будет продолжаться до бесконечности.
Для решения проблемы придётся закомментировать строку add_action('template_redirect', 'redirect_canonical'); в файле /wp-includes/canonical.php.
Ноя
2008
Комментарии к статье «WordPress: заменяем Apache mathopd’ом» (3) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «WordPress: заменяем Apache mathopd’ом»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Чисто субъективно: mathopd работает быстре, чем nginx, так что стоит присмотреться к нему повнимательнее…
В файрфоксе у меня при заходе на главную пишет ошибка forbidden и тд
С IP 79.139.147.167 ошибок в логе Апача нет