Nginx


 * nginx/proxy

Установка
В дополнение к уже выбранным отметил HTTP_REALIP_MODULE и больше ничего не изменял. make -C /usr/ports/www/nginx install clean

Настройка
echo 'nginx_enable="YES"' >> /etc/rc.conf

/usr/local/etc/nginx/nginx.conf

 server { listen      81; server_name yally.tushinec.ru; location / { root  /usr/local/www/nginx; index index.html index.htm; proxy_pass       http://192.168.0.253:81; proxy_set_header X-Real-IP  $remote_addr; }   server { listen      81; server_name mars.tushinec.ru; location / { root  /usr/local/www/nginx; index index.html index.htm; proxy_pass       http://192.168.0.253:80; proxy_set_header X-Real-IP  $remote_addr; }       error_page   500 502 503 504  /50x.html; location = /50x.html { root  /usr/local/www/nginx-dist; } 

Настройки
Переменная HTTP_HOST это то, что запросил клиент, а SERVER_NAME это значение из конфигурационного файла Apache.

Чтобы транслировал запрашиваемый в HTTP-запросе hostname, а не подменял своим, потребуется следующая строка: proxy_set_header Host $http_host;

Описание модуля http_proxy.

Если определен HTTP_X_REAL_IP, то использовать его, иначе REMOTE_ADDR. В случае использования nginx REMOTE_ADDR заменяется по умолчанию на IP того сервера, где он запущен.

---
 * http://www.lexa.ru/nginx-ru/

Установка вместе с PHP
spawn-fcgi разрабатывается автором lighttpd

eAccelerator is a free open-source PHP accelerator & optimizer. It increases the performance of PHP scripts by caching them in their compiled state, so that the overhead of compiling is almost completely eliminated. It also optimizes scripts to speed up their execution. eAccelerator typically reduces server load and increases the speed of your PHP code by 1-10 times.

FPM (FastCGI Process Manager) is an alternative PHP FastCGI

PHP-FPM is finally in PHP core! It is based off of the 0.6.x series in Launchpad. It is most likely going to ship with PHP 5.3.3

Для вышедшей 5.3.2 надо из отдельной ветки

svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3_FPM php_5_3_fpm cd php_5_3_

./configure --enable-fpm

 request_terminate_timeout - таймаут (в секундах) для исполнения php запроса, после которого воркер будет принудительно перезапущен. Это то, что раньше называлось request_execution_timeout и не работало.

request_slowlog_timeout - таймаут (в секундах) для исполнения php запроса, после которого в отдельный лог сохранится php backtrace того места в скрипте, на котором, возможно, подвис запрос.

slowlog - имя файла для этого лога. 

Время работы скрипта
$upstream_response_time — в переменной хранятся времена ответов серверов в секундах с точностью до миллисекунд. Несколько ответов также разделяются запятыми и двоеточиями.

http://sysoev.ru/nginx/docs/http/ngx_http_upstream.html

 вырезка из access.log ... 85.17.155.132 - - [27/May/2008:14:40:45 +0400 "2.861" "0.846"] GET /?option=com_smf&Itemid=44&action=printpage;topic=8.0 HTTP/1.0 "200" 296445 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.0" "-" 38.99.44.103 - - [27/May/2008:14:43:16 +0400 "18.194" "18.193"] GET /index.php?option=com_content&task=view&id=93&Itemid=51&limit=1&limitstart=130 HTTP/1.0 "200" 14678 "-" "Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html)" "- 

Проблемы
Отказывается стартовать с ошибкой Starting nginx. 2011/01/10 01:36:02 [emerg] 1227#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

в конфиг добавлена server_names_hash_bucket_size 33;

Ограничения
Entity too large при передаче 1Мб - ограничение на размер файла. Для его изменения client_max_body_size нужно использовать doc. Например, client_max_body_size 10m;

Вместе с php
 * 1) http://www.lissyara.su/articles/freebsd/www/nginx+php+spawn-fcgi/
 * 2) http://www.lissyara.su/articles/freebsd/www/nginx+php-fpm+mysql/
 * 3) http://www.cyberciti.biz/faq/freebsd-configure-nginx-php-fastcgi-server/

апвп