Ставим Nginx на cPanel CentOS
Автор: admin Раздел: панель Cpanel
Как работает Nginx
Nginx - появился в 2002 Русскай сервер веб-программистов. Обычно используется для статических файликов. В нашем случае мы используем шип «Apache + NGINX», где последний работает на прокси-сервер. Работа этой связки sleduyaschaya: - NGINX прослушивает порт 80; - Apache слушает порт 8081 (технически, вы можете выбрать любой другой порт); - Все входящие HTTP-запросы обрабатываются первые NGINX; - Если HTTP-запроса, здесь необходимое для загрузки статических файликов из следующего списка: (GIF | 3gp | JPG | JPEG | PNG | ICO | WMV | AVI | ASF | ASX | миль на галлон | MPEG | mp4 | PLS | mp3 | середине | WAV | SWF | FLV | HTML | HTM | TXT | JS | CSS | EXE | ZIP | RAR | GZ | смолы | TGZ | bz2 | грн | 7z | документ | DOCX | XLS | XLSX | PDF | ISO) обрабатывает этот запрос (и, соответственно, возвращение таких файликов) не NGINX, Apache и вообще не участвует. - Если HTTP-запроса требуется PHP или Perl / CGI-скрипт, он перенаправляется NGINX-ом на порт 8081, и даже тогда он обрабатывает Apache. Таким образом, сервер, Есть два веб-серверы Nginx (порт 80) и Apache (на порт 8081), ,что "разрыв" между обработки HTTP-запросов. NGINX oborabatyvaet "статические" и Apache - «динамика» Основная цель этой схеме -. Ускорения обработки запросов и снизить нагрузку на сервер NGINX оптимизирован для обработки статического контента, и в этом отношении далеко впереди Apache, но. ему не хватает этой гибкости, как Apache, который можно включить / выключить сотни различных модулей. Установка: [-hide-]Так как у нас Apache работает и настраивается из-под Cpanel, здесь необходимо не просто установить NGINX, но и сделать так, ,чтобы при добавлении/удалении новых аккаунтов соответственно менялась настройка данного аккаунта NGINX и так далее. К счастью, есть автоматический инсталлятор, который сам все делает. Любопытные могу подробнее почитать про все это тут: http://forums.cpanel.net/f189/nginx-automated-installer-148109-p14.html Итак, установка сводится к следующему: cd /usr/local/src wget http://myidealhost.com/ddtools/nginxadmin1.8-stable.tar tar -xf nginxadmin1.8-stable.tar cd publicnginx ./nginxinstaller install Если по каким-либо причинам ,что-то не заработало и вам нужно все вернуть назад к обычному Apache, просто запускаем: ./nginxinstaller uninstall После инсталляции добавляем в рутовый крон: 0 * * * * /usr/sbin/tmpwatch -am 1 /tmp/nginx_client и потом /etc/init.d/crond restart Конфигурация По-умолчанию, NGINX ставится в папочку: /etc/nginx (вообщето только конфигурационные файликы, бинарник лежит тут /usr/local/sbin/) Файлы хостов (они создаются или удаляются автоматически, когда вы добавляете или удаляете домен из Cpanel) лежат в папке: /etc/nginx/vhosts Открываем файлик конфигурации NGINX: /etc/nginx/nginx.conf Ставим следующую конфигурацию: user nobody; # no need for more workers in the proxy mode worker_processes 2; error_log /var/log/nginx/error.log info; worker_rlimit_nofile 20480; events { worker_connections 20000; # increase for busier servers use epoll; # you should use epoll here for Linux kernels 2.6.x } http { server_name_in_redirect off; server_names_hash_max_size 4096; server_names_hash_bucket_size 512; include mime.types; default_type application/octet-stream; server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; gzip on; gzip_vary on; gzip_disable "MSIE [1-6]\."; gzip_proxied any; gzip_http_version 1.1; gzip_min_length 0; gzip_comp_level 3; gzip_buffers 16 8k; proxy_buffering Off; # You can remove image/png image/x-icon image/gif image/jpeg if you have slow CPU gzip_types text/plain text/xml text/css application/x-javascript application/xml image/png image/x-icon image/gif image/jpeg application/xml+rss text/javascript application/atom+xml; ignore_invalid_headers on; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; reset_timedout_connection on; connection_pool_size 256; client_header_buffer_size 256k; large_client_header_buffers 4 256k; client_max_body_size 10M; client_body_buffer_size 128k; request_pool_size 32k; output_buffers 4 32k; postpone_output 1460; proxy_temp_path /tmp/nginx_proxy/; client_body_in_file_only on; log_format bytes_log "$msec $bytes_sent ."; include "/etc/nginx/vhosts/*"; } Рестарт NGINX: /etc/init.d/nginx restart После перезапуска обязательно проверяем, или он поднялся: ps auxc | grep nginx Также надо убедится ,что и NGINX и Apache одновременно подняты и слушают нужные порты: netstat -anp | grep :80 | grep LISTEN после такой команды вы должны получить ,что-то вроде этого tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3856/nginx.conf tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 3862/httpd Возможно, ,что при перезапуске NGINX он не подымется. Тогда смотрим файликик: /var/log/nginx/error.log Скорее всего ошибка будет заключаться в неверной конфигурации хоста в «/etc/nginx/vhosts». Исправляем ее, если можем и после исправления делаем перезапуск NGINX. Возможные проблемы Проблемы, которые могут возникнуть при установленном NGINX 1) Сайт не паблишится через Фронт-Пейдж Почему: Все верно, Фронт-Пейдж – это модуль Апача, так ,что напрямую через HGINX он работаеть не будет. Решение: Заливать нужно с указанием порта Апача (в нашем случае – 8081). То есть: http://example.com:8081/ 2) Не грузятся сайты, «висят» Почему: Как правило это значит, ,что забиты все коннекты NGINX либо из-за ДДОС атаки, либо из-за неверной настройки самого NGINX. Решение: Смотрим сколько к серверу соединений. Если ДДОС, то отбиваем его (если можем). Также смотрим конфиг NGINX: /etc/nginx/nginx.conf и увеличиваем (если здесь необходимо) значения с worker_connections 10000; до, например worker_connections 20000; После перезапускуем NGINX. 3) Забивается ТМП-раздел Почему: NGINX интенсивно кэширует запросы, используя «/tmp» раздел. В зависимости от интенсивности запросов к серверу, ТМП-раздел может забиваться быстрее или медленнее. Решение: Нужно в рутовый крон прописать следующее 0 */4 * * * /usr/sbin/tmpwatch -am 4 /tmp/nginx_client возможны также и другие варианты, типа 0 * * * * /usr/sbin/tmpwatch -am 1 /tmp/nginx_client или */10 * * * * rm -rf /tmp/nginx_client/* Последний вариант используем, если ТМП-диск забиватся слишком быстро (к примеру, когда сервер атакуют). Возможно иногда прийдется ставить чистку раз в 5 минут. 4) 502 Bad Gateway Решение: Вот ,что пишут разработчики: «502 Bad Gateway happens when apache down. Check the Apache non-SSL IP/port under tweak settings. Apache non-SSL IP/port should be 8081 afrer successful install. » То есть возможно, ,что был изменен конфиг Апача или сам Апач лежит. Проверяем конфиг Апача и сам Апача, если надо, переставляем NGINX. 5) 500 internal server error nginx Пока ,что конкретного решения нету, потому ,что все зависит от того, ,что записано в лог-фале. То есть смотрим ,что генерирует ошибку в файлике /var/log/nginx/vhost-error_log и на основе этого выясняем где ошибка. 6) Клиенту поставили выделенный ай-пи, и сайт перестал работать Почему: Пока ,что в функционал плагина «NGINXCP», который мы используем, не заложена автоматическая смена ай-пи адреса в конфиге NGINX. Решение: Надо вручную отредактировать конфигурацию NGINX для нужного хоста. Пример: Хост «example.com» был на адресе 11.11.11.11, а перевелся на 22.22.22.22. Запускаем: replace '11.11.11.11' '22.22.22.22' -- /etc/nginx/vhosts/example.com или же через SED sed -i 's/11.11.11.11/22.22.22.22/' /etc/nginx/vhosts/example.com и потом /etc/init.d/nginx restart 7) Клиенту сменили мастер-домен, и сайт с новым доменом не работает Почему: Причина та же, ,что и в пункте 6. Решение: Надо вручную отредактировать конфигурацию NGINX для нужного хоста. Пример: Мастер-домен сменили с «petya.com» на «vasya.com» Делаем mv /etc/nginx/vhosts/petya.com /etc/nginx/vhosts/vasya.com потом replace 'petya.com' 'vasya.com' -- /etc/nginx/vhosts/vasya.com и потом /etc/init.d/nginx restart 8) Не работает cPanel и Webmail через субдомены cpanel.domain.com, webmail.domain.com Почему: Нету соответсвующего конфига в NGINX Решение: Редактируем соответсвующий виртуал-хост vi /etc/nginx/vhosts/domain.com меняем строчеку server_name domain.com www.domain.com xxx.xxx.xxx.xxx; на server_name domain.com www.domain.com webmail.domain.com cpanel.domain.com xxx.xxx.xxx.xxx; и потом перезапускуем NGINX. /etc/init.d/nginx restart[-hide-] |