rpm --nodeps -e GeoIP
А то некоторые yum под попытку удаления GeoIP пытаются еще и nginx похерить - "за компанию" (с)
rpm --nodeps -e GeoIP
2012/11/12 20:12:53 [alert] 5554#0: accept() failed (24: Too many open files) while accepting new connection on X.X.X.X:80
ulimit -n 65535
worker_rlimit_nofile 20480;
Connection reset by peer) while reading response header from upstreamПогуглив - нашел много танцев с конфигами nginx и бубнами, ни один из которых не помог, кроме одного... БЕЗУМНОГО совета, который как водится - сработал в моем случае ;-)
/sbin/service php-fpm restartУстановка Wordfence Security на Wordpress - прошла успешно ;-)
server_tokens off;
expose_php = Off
client_max_body_size 500m;
<?php var $file_cache = true; ?>
<?php $db->query($sql, false, false, ‘имя_файла’, время_кэширования) ?>
<?php var $compiling = true; ?>Данное «ядро» была введено мной в версии 1.6.1 - оно позволяет сэкономить примерно 6 SQL запросов на каждой странице, но несколько повысит нагрузку на PHP.
<?php define('RC_TREE_CACHE', 1); ?>это сильно поможет при работе с большими деревьями категорий - в таких модулях, как news, например
eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="0" eaccelerator.shm_only="1"
tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/lib/php tmpfs size=200M,nr_inodes=1m,nosuid 0 0
Если вся солянка крутится на одной машине - то также используем коннект через сокеты (по умолчанию не используется - стоит ip адрес). В таком варианте работы memcache возможны проблемы с некоторыми средствами мониторинга memcache (которые работают также по IP).
Не забываем в PHP использовать сжатие при работе с MEMCACHE.
http { ... limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; limit_zone three $binary_remote_addr 10m;
Включаем кэширование для неавторизованных гостей
http { ... fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=wholepage:50m inactive=15d max_size=5000m; location ~ .*\.php$ { limit_conn three 20; include /etc/nginx/fastcgi.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fastcgi/php.socket; #access_log /var/log/nginx/domain.access.log my_combined; fastcgi_cache wholepage_guest; fastcgi_cache_valid 301 302 304 10m; fastcgi_cache_valid 200 360m; fastcgi_cache_valid 404 5s; fastcgi_cache_key "$request_method|$host|$request_uri"; fastcgi_pass_header "Set-Cookie"; fastcgi_ignore_headers "Cache-Control" "Expires"; fastcgi_cache_bypass $cookie_phpbb_session $arg_nocache $arg_PHPSESSID; fastcgi_no_cache $cookie_phpbb_session $arg_nocache $arg_PHPSESSID; }Где phpbb_session - имя куки по которой идет авторизация
Все запросы с ?nocache=1 и PHPSESSID попадают на PHP-бэкенд сразу без кэша не забываем открыть скрипт, по которому идет авторизация (в том числе и всякие капчи - их можно переписать на ?nocache=1) - тут возможно прийдется немного поковыряться и в коде CMS тоже.
location /register.php { limit_conn three 20; include /etc/nginx/fastcgi.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fastcgi/php.socket; }
location /mymodule {}Если от регекспов никак не избавится - то лучше их обрамлять простым location (Причина - сложноуловимые перехлесты в логике парсинга URL - кто за кем будет следовать)
location /mymodule { location ~ \/mymodule\/(.*)\.php$ { чего-то } }
Отрубаем access лог для картинок
Разумеется - это только основные моменты оптимизации, на самом деле их гораздо больше. А какие трюки для уменьшения нагрузки на сервер знаете вы? Пишите в комментах.
server { listen 80; server_name host.ru; index index.php; root /var/www/vhosts/host.ru/httpdocs; location ~ \.php$ { limit_conn three 20; include /etc/nginx/include.d/default_fastcgi_params.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php; } location ~ /\.ht { deny all; } if (!-e $request_filename) { rewrite ^(.+)$ /index.php last; } }и общий для всех хостов на машине /etc/nginx/include.d/default_fastcgi_params.conf
fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; fastcgi_connect_timeout 60; fastcgi_send_timeout 60; fastcgi_read_timeout 60;
add_header X-Content-Security-Policy "allow 'self'; img-src *; script-src *;"; add_header X-Frame-Options SAMEORIGIN; add_header X-XSS-Protection "1; mode=block";Разумеется, если у админа включен параноидальный режим, то img-src *; script-src *; можно править на список одобренных доменов