Устанавливаем Nginx в качестве frontend веб-сервера с DirectAdmin

Тему в разделе "Панели управления", создал(-а) Dmitriy R., 07.01.2014.

  1. Dmitriy R.

    Dmitriy R. Moderator Команда форума

    Итак, хочется продолжить тему конфигурации серверов с контрольной панелью DirectAdmin. Благодаря своей стабильности, у данной панели есть проблемы с тонкой настройкой. Примером такой тонкой настройки является установка веб-сервера nginx в качестве фронт-энда. Тут приведу типичную конфигурацию для CentOS 6.
    Сперва нам понадобиться добавить репозиторий EPEL, если мы не хотим компилировать nginx (лично у меня такого желания обычно не возникает, разве что если очень хочется поставить pagespeed). Для установки репозитория выполним:
    Код:
    rpm -Uvh http://ftp.colocall.net/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    Вполне возможно, что на момент прочтения поста версия EPEL изменится и ссылка будет недоступна. В любом случае актуальную версию можно будет найти по ссылке

    Далее можем установить сам nginx:
    Код:
    yum install -y nginx
    Самая простая часть позади:) Теперь нам нужно обучить DirectAdmin при создании нового виртуального хоста указывать запасной порт, к примеру 8081. Упростим задачу и используем sed для подстановки нужных значений в шаблонах DA:
    Код:
    sed -i 's#ips.conf#ips_hack.conf#g' /etc/httpd/conf/extra/httpd-vhosts.conf
    cp /etc/httpd/conf/ips.conf /etc/httpd/conf/ips_hack.conf
    sed -i 's#:80#:8081#g' /etc/httpd/conf/ips_hack.conf
    sed -i 's#:80#:8081#g' /etc/httpd/conf/extra/httpd-vhosts.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/ips_virtual_host.conf
    sed -i 's#:|PORT_80|#:8081#g' /usr/local/directadmin/data/templates/virtual_host2_sub.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/virtual_host2_sub.conf
    sed -i 's# |MULTI_IP|##g' /usr/local/directadmin/data/templates/virtual_host2_sub.conf
    sed -i 's/CustomLog/#CustomLog/g' /usr/local/directadmin/data/templates/virtual_host2_sub.conf
    sed -i 's#:|PORT_80|#:8081#g' /usr/local/directadmin/data/templates/virtual_host.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/virtual_host.conf
    sed -i 's# |MULTI_IP|##g' /usr/local/directadmin/data/templates/virtual_host.conf
    sed -i 's/CustomLog/#CustomLog/g' /usr/local/directadmin/data/templates/virtual_host.conf
    sed -i 's#:|PORT_80|#:8081#g' /usr/local/directadmin/data/templates/virtual_host_sub.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/virtual_host_sub.conf
    sed -i 's# |MULTI_IP|##g' /usr/local/directadmin/data/templates/virtual_host_sub.conf
    sed -i 's/CustomLog/#CustomLog/g' /usr/local/directadmin/data/templates/virtual_host_sub.conf
    sed -i 's#:|PORT_80|#:8081#g' /usr/local/directadmin/data/templates/redirect_virtual_host.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/redirect_virtual_host.conf
    sed -i 's# |MULTI_IP|##g' /usr/local/directadmin/data/templates/redirect_virtual_host.conf
    sed -i 's#:|PORT_80|#:8081#g' /usr/local/directadmin/data/templates/virtual_host2.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/templates/virtual_host2.conf
    sed -i 's# |MULTI_IP|##g' /usr/local/directadmin/data/templates/virtual_host2.conf
    sed -i 's/CustomLog/#CustomLog/g' /usr/local/directadmin/data/templates/virtual_host2.conf
    sed -i 's#Port 80#Port 8081#g' /usr/local/directadmin/data/templates/httpd.conf
    sed -i 's#Listen 80#Listen 8081#g' /usr/local/directadmin/data/templates/httpd.conf
    sed -i 's#Listen 80#Listen 8081#g' /etc/httpd/conf/httpd.conf
    sed -i 's#:80#:8081#g' /usr/local/directadmin/data/users/*/httpd.conf
    Теперь осталось только сообщить nginx, что apache слушает на 8081 порту и соединения необходимо отдавать ему. Для этого мы открываем /etc/nginx/conf.d/default.conf с помощью любимого редактора и приводим к виду:
    Код:
    server {
            error_log /var/log/nginx/error.log;
            listen *:80;
            server_name *.*;
      
            charset utf-8;
    
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
        if ($args ~ "^.+$")
        {
            break;
        }
        proxy_pass http://31.131.28.23:8081;
        proxy_set_header Host $host;
        expires 30d;
        proxy_intercept_errors on;
        proxy_cache default;
        proxy_cache_min_uses 1;
        proxy_cache_valid 1d;
        proxy_ignore_client_abort on;
        proxy_temp_path /tmp/nginx/;
        proxy_cache_use_stale updating;
      
    }
                                      
      
            location /
            {
                proxy_pass http://31.131.28.23:8081/;
                proxy_redirect off;
    
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              
                client_max_body_size 10m;
                client_body_buffer_size 8k; #128k
              
                proxy_connect_timeout 90;
                proxy_send_timeout 90;
                proxy_read_timeout 90;
              
                proxy_buffer_size 4k;
                proxy_buffers 4 32k;
                proxy_busy_buffers_size 64k;
                proxy_temp_file_write_size 64k;
            }
        }
    
    И в качестве последнего штриха дописываем 2 строчки в /etc/nginx/nginx.conf перед
    include /etc/nginx/conf.d/*.conf;

    Код:
    proxy_cache_path /tmp/nginx levels=2:2 keys_zone=default:1000m;
    proxy_cache_key "$host$request_uri $cookie_user";
    Вот, в общем-то и все. Осталось только перезагрузить сервисы:
    Код:
    service httpd restart
    service nginx restart
    и надеяться, что все было сделано правильно:)

    * О установке mpm-worker и смены режима PHP на php-fpm в DirectAdmin Вы можете узнать из предыдущего поста
     
    Последнее редактирование модератором: 04.09.2014
    Wolverine нравится это.

Поделиться этой страницей