Oleg/ 25 апреля, 2016

После уcтановки связки Nginx+PHP5-FPM не плохо было бы чуточку настроить всё это безобразие

Ниже просто пример типового конфига, без претензии на гениальность.

Настройка NGINX

/etc/nginx/conf.d/default.conf

server {
    listen       80;
    listen        443    ssl;
    server_name  site.ru www.site.ru;
    root   /var/www/site.ru/public_html/;
    gzip on; # включаем сжатие gzip
    gzip_disable «msie6»;
    gzip_comp_level    5;
    gzip_min_length    1100;
    gzip_buffers    16 8k;
    gzip_proxied    any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    
    ssl_certificate /etc/ssl/certs/site.ru_nginx.crt;        
    ssl_certificate_key /etc/ssl/private/site.ru_nginx.key;    
    ssl_session_timeout            20m;    # время 20 минут
    ssl_session_cache            shared:SSL:20m;    # размер кеша 20МБ
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers        on;
    ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    
    #Обращение только по имени хоста
    if ($host !~ ^(site.ru|www.site.ru)$ ) {
        return 444;
    }
    
    #Ограничиваем обращение к серверу по типам запросов
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
    }
    # Блокируем менеджеры загрузки
    if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
        return 403;
    }
    location ~* /(?:uploads|files)/.*\.php$ {
        deny all; # запрет для загруженных скриптов
    }

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off;
        log_not_found off;
        expires max; # кеширование статики
    }
    
    location / {
        root   /var/www/site.ru/public_html/;
        index  index.html index.php;
        proxy_redirect off;
        client_max_body_size       10m;
        client_body_buffer_size    128k;
        proxy_connect_timeout      600;
        proxy_send_timeout         600;
        proxy_read_timeout         600;
        send_timeout               600;
        proxy_buffer_size          1024k;
        proxy_buffers              8 5120k;
        proxy_busy_buffers_size    10240k;
        proxy_temp_file_write_size 10240k;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        expires off;           
        try_files $uri $uri/ /index.php?$args; # permalinks
    }
    location ~ \.php$ {
       try_files $uri =404;
       fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_script_name;
       fastcgi_connect_timeout 60;
       fastcgi_send_timeout 60;
       fastcgi_read_timeout 60;
       fastcgi_buffer_size 128k;
       fastcgi_buffers 4 256k;
       fastcgi_busy_buffers_size 256k;
       fastcgi_temp_file_write_size 256k;
       fastcgi_intercept_errors on;
       include fastcgi_params;
       fastcgi_index index.php;
       client_max_body_size       10m;
       client_body_buffer_size    128k;
       expires 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;
       fastcgi_pass unix:/var/run/php5-fpm-site.sock;
    }  
    # deny access to .htaccess files, if Apache’s document root
    # concurs with nginx’s one
    location ~ /\.ht {
        deny  all;
    }
}

——————————————————————————

Настройка PHP5-FPM

/etc/php5/fpm/pool.d

[site1]
user = site
group = site
listen = /var/run/php5-fpm-site.sock
listen.owner = site
listen.group = site
listen.mode = 0666
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
request_terminate_timeout = 600
security.limit_extensions = .php
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 256M
php_admin_value[upload_tmp_dir] = /var/www/site.ru/public_html/tmp
php_admin_value[soap.wsdl_cache_dir] = /var/www/site.ru/public_html/tmp
php_admin_value[date.timezone] = Europe/Moscow
php_admin_value[upload_max_filesize] = 100M
php_admin_value[post_max_size] = 100M
php_admin_value[open_basedir] = «/var/www/site.ru/»
php_admin_value[session.save_path] = /var/www/site.ru/public_html/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[apc.cache_by_default] = 0

 

Если на сервере несколько сайтов, в PHP5-FPM возможно настроить для каждого сайта свой пул

Поделиться этой записью