Настройки VPS под Prestashop

Здравствуйте, помогите пожалуйста разобраться с рерайтами в nginx. Престашоп 1.6 прописываю в etc/nginx/sites_aviable/сайт.ком.conf



Брал тут: Для просмотра ссылки Войди или Зарегистрируйся

но пропадают фото товаров и при переходе на другие странички с главной выдает ошибку 404.
Код:
server {
listen *:80;
server_name site.ru;

  root /home/user/www;

  access_log /home/user/logs/nginx.access.log; #расположение логов доступа
  error_log /home/user/logs/nginx.error.log; #расположение логов ошибок

index index.php index.html;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# Deny all for .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

# рерайты пересташопа
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
try_files $uri $uri/ /index.php$is_args$args;
error_page 404 /index.php?controller=404;

# рерайты advanced search 4
rewrite ^/as4_seositemap.xml$ /modules/pm_advancedsearch4/seositemap.xml last;
if ($args !~* "^controller=products-comparison"){
        set $rule_1 1;
}
if ($rule_1 = "1"){
        rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 last;
}

if ($args ~ "^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$"){
        set $rule_2 1;
        set $bref_2_0 $1;
        set $bref_2_1 $2;
        set $bref_2_2 $3;
        set $bref_2_3 $4;
}
if ($rule_2 = "1"){
        rewrite ^/advancedsearch4.php /${bref_2_0}/s/${bref_2_1}/${bref_2_2}?p=${bref_2_3} permanent;
}
if ($args ~ "^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)"){
        set $rule_3 1;
        set $bref_3_0 $1;
        set $bref_3_1 $2;
        set $bref_3_2 $3;
}
if ($rule_3 = "1"){
        rewrite ^/advancedsearch4.php /${bref_3_0}/s/${bref_3_1}/${bref_3_2}? permanent;
}
if ($args ~ "^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$"){
        set $rule_4 1;
        set $bref_4_0 $1;
        set $bref_4_1 $2;
        set $bref_4_2 $3;
}
if ($rule_4 = "1"){
        rewrite ^/advancedsearch4.php /s/${bref_4_0}/${bref_4_1}?p=${bref_4_2} permanent;
}
if ($args ~ "^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)"){
        set $rule_5 1;
        set $bref_5_0 $1;
        set $bref_5_1 $2;
}
if ($rule_5 = "1"){
        rewrite ^/advancedsearch4.php /s/${bref_5_0}/${bref_5_1}? permanent;
}

location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}

gzip on;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_comp_level 6;
gzip_vary on;

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|css|js|jsonp)$ { expires 30d; }

}

С виду жесть полная, но у меня работает всё кроме ссылки к карте сайта.
 
Здравствуйте, помогите пожалуйста разобраться с рерайтами в nginx. Престашоп 1.6 прописываю в etc/nginx/sites_aviable/сайт.ком.conf



Брал тут: Для просмотра ссылки Войди или Зарегистрируйся

но пропадают фото товаров и при переходе на другие странички с главной выдает ошибку 404.

Конфиг тестового сервера (админ панель VestaCP) для примера. Заменяешь пути и название домена и все должно заработать.

Скрытое содержимое доступно для зарегистрированных пользователей!
 
Конфиг nginx для Prestashop 1.6.1.x + AS 4.11.x

Код:
server {
    listen 80;
    server_name site.com www.site.com;
    rewrite ^ https://site.com$request_uri? permanent;
}

server {
    listen 443 ssl http2 deferred;
    server_name site.com www.site.com;

    #SSL
    include /etc/nginx/conf.d/ssl.cfg;
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
    ssl_dhparam /etc/letsencrypt/live/site.com/dhparam.pem;

    root   /home/www/site.com;
    index  index.php;

    client_max_body_size 100m;
    client_body_buffer_size 128k;

    charset utf8;

    #client_header_buffer_size 2k;
    #large_client_header_buffers 8 16k;

    rewrite ^/(.*)/$ /$1 permanent;

    location / {
        try_files $uri $uri/ /index.php?q=$args;

        if (-f $request_filename) { expires 30d; break; }

        if (!-e $request_filename) { rewrite ^(.+)$ /index.php?$args last; }
    }

    include /etc/nginx/conf.d/prestashop.cfg;
    include /etc/nginx/conf.d/phpmyadmin.cfg;

    deny 54.243.185.88;  # tinfoil spider

    location ~* \.(png|jpg|jpeg|gif|ico)$ {
        access_log      off;
        expires         max;
        gzip            off;
        log_not_found off;
    }

    location ~* ^.+\.(css|js)$ {
        access_log      off;
        expires         7d;
        add_header Vary Accept-Encoding;
        log_not_found off;
    }

    location ~ \.php$ {

        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  HTTPS on;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_script_name;

        fastcgi_param  HTTP_MOD_REWRITE On;

        include fastcgi_params;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 1200s;

        fastcgi_buffer_size 16k;
        fastcgi_buffers 16 64k;

        fastcgi_cache_valid 200 301 302 1h;
        fastcgi_cache_valid 404 500 501 502 503 504 505 506 507 509 510 1m;
        fastcgi_cache_valid any 1m;

        #fastcgi_busy_buffers_size 16k;
        #fastcgi_temp_file_write_size 64k;
        #fastcgi_intercept_errors off;
    }

    location /admin12345/ {
        auth_basic           "closed site";
            auth_basic_user_file ./pass/admin;
            }

    location /favicon.ico { log_not_found off; access_log off; }

    location /robots.txt { allow all; log_not_found off; access_log off; }

    location ~ /\.ht { deny  all; }

    #letsencrypt
    location /.well-known/acme-challenge { alias /home/www/.well-known/acme-challenge; }

    access_log /var/log/nginx/site.com.access.log combined buffer=32 flush=5m;
    error_log /var/log/nginx/traverse.error.log;

}

бонус - содержимое инклуда ssl
Код:
 ssl on;
ssl_session_timeout 24h;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=31536000;";
resolver 8.8.8.8 8.8.4.4 valid=300s;
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 10s;

содержимое prestashop.cfg
Код:
rewrite ^/[a-zA-Z][a-zA-Z]/index.php(.*)$ /index.php$1;
       rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
       rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
       rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
       rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
       rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
       rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
       rewrite ^/page-not-found$ /index.php?controller=404 last;
  
    #Advanced Search block options
    #location /as4_seositemap-1.xml {
    #    rewrite ^(.*)$ /modules/pm_advancedsearch4/sitemap/seositemap.xml break;
    #}

    location /as4_seositemap {
       rewrite ^/as4_seositemap-([0-9]+).xml$ /modules/pm_advancedsearch4/sitemap/seositemap-$1.xml break;
    }
  
#rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 break;
#rewrite "^/ru/s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=ru&id_seo=$1&seo_url=$2 break;

в последних версиях адвансед серч работает без рерайтов, в конфиге они закомментированы.

содержимое инклуда phpmyadmin
Код:
location /pma12345/ {

        auth_basic           "closed site";
        auth_basic_user_file ./pass/pma;

        alias /usr/share/phpMyAdmin/;
        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_ignore_client_abort off;
                }
}

обязательно поставьте ssl сертификат - тогда появляется возможность использовать http/2 - это ускоряет загрузку. бесплатный валидный сертификат выдаётся на letsencrypt.
скрывайте за хттп авторизацию админку и другие важные скрипты

ВСЁ, что касается кэшей и буферов - проверяйте каждый параметр отдельно. Есть неиллюзорный шанс замедлить сайт вместо ускорения.
Лучше не используйте, если не знаете, что он делает, и лень читать справку - от значений по умолчанию хуже не будет.
 
Последнее редактирование:
fastcgi_pass 127.0.0.1:9000;

будет работать, если nginx использует tcp. Если работает через сокет - нужно указывать имя сокета.

fastcgi_connect_timeout 12000s;
fastcgi_read_timeout 12000s;
fastcgi_send_timeout 12000s;


Вы ТОЧНО уверены, что хотите, чтобы сервер ждал ответа каждого подвисшего скрипта больше 3х часов, и держал открытым соединения столько же времени ?

fastcgi_buffer_size 64k;
fastcgi_buffers 16 64k;


больше - не всегда лучше. рекомендую подобрать индивидуально каждый из этих параметров, а не бездумно копировать.

fastcgi_cache_valid 200 301 302 1d;
fastcgi_cache_valid 304 120d;
fastcgi_cache_valid 404 1m;


Я не бог весть какой знаток nginx, но имхо эта жесть применима для статических сайтов разве что. Читайте справку.


Всё, что нужно для настройки рерайтов для престы - у меня вынесено в отдельный файл prestashop.cfg, и подключается в конфиге nginx

Код:
       rewrite ^/[a-zA-Z][a-zA-Z]/index.php(.*)$ /index.php$1;
       rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
       rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
       rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
       rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
       rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
       rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
       rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
       rewrite ^/page-not-found$ /index.php?controller=404 last;
       try_files $uri $uri/ /index.php$is_args$args;

        #Advanced Search block options
        location = /as4_seositemap.xml {
            rewrite ^(.*)$ /modules/pm_advancedsearch4/sitemap/seositemap.xml break;
        }

        location /as4_seositemap {
            rewrite ^/as4_seositemap-([0-9]+).xml$ /modules/pm_advancedsearch4/sitemap/seositemap-$1.xml break;
        }

        rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 break;

Мой рабочий конфиг nginx :
Код:
server {
    listen 80;
    server_name site.com www.site.com;
    rewrite ^ https://site.com$request_uri? permanent;
}

server {
    listen 443 ssl http2 deferred;
    server_name site.com www.site.com;

    #SSL
    include /etc/nginx/conf.d/ssl.cfg;
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
    ssl_dhparam /etc/letsencrypt/live/site.com/dhparam.pem;

    root   /home/www/site.com;
    index  index.php;

    client_max_body_size 100m;
    client_body_buffer_size 128k;

    charset utf8;

    #client_header_buffer_size 2k;
    #large_client_header_buffers 8 16k;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;

        if (-f $request_filename) { expires 30d; break; }

        if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; }
    }

    include /etc/nginx/conf.d/prestashop.cfg;
    include /etc/nginx/conf.d/phpmyadmin.cfg;

    deny 54.243.185.88;  # tinfoil spider

    location ~* \.(png|jpg|jpeg|gif|ico)$ {
        access_log      off;
        expires         max;
        gzip            off;
    }

    location ~* ^.+\.(css|js)$ {
        access_log      off;
        expires         7d;
        add_header Vary Accept-Encoding;
    }

    location ~ \.php$ {

        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  HTTPS on;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_script_name;

        fastcgi_param  HTTP_MOD_REWRITE On;

        include fastcgi_params;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 1200s;

        fastcgi_buffer_size 16k;
        fastcgi_buffers 16 64k;

        fastcgi_cache_valid 200 301 302 1h;
        fastcgi_cache_valid 404 500 501 502 503 504 505 506 507 509 510 1m;
        fastcgi_cache_valid any 1m;

        #fastcgi_busy_buffers_size 16k;
        #fastcgi_temp_file_write_size 64k;
        #fastcgi_intercept_errors off;
    }

    location /z/ {
        auth_basic           "closed site";
            auth_basic_user_file ./pass/z;
            }

    location /admin12345/ {
        auth_basic           "closed site";
            auth_basic_user_file ./pass/admin;
            }

    location = /favicon.ico { log_not_found off; access_log off; }

    location = /robots.txt { allow all; log_not_found off; access_log off; }

    location ~ /\.ht { deny  all; }

    #letsencrypt
    location /.well-known/acme-challenge { alias /home/www/.well-known/acme-challenge; }

    access_log /var/log/nginx/site.com.access.log combined buffer=32 flush=5m;
    error_log /var/log/nginx/traverse.error.log;

}

бонус - содержимое инклуда ssl
Код:
 ssl on;
ssl_session_timeout 24h;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=31536000;";
resolver 8.8.8.8 8.8.4.4 valid=300s;
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 10s;

содержимое инклуда phpmyadmin
Код:
location /pma12345/ {

        auth_basic           "closed site";
        auth_basic_user_file ./pass/pma;

        alias /usr/share/phpMyAdmin/;
        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_ignore_client_abort off;
                }
}

обязательно поставьте ssl сертификат - тогда появляется возможность использовать http/2 - это ускоряет загрузку. бесплатный валидный сертификат выдаётся на letsencrypt.
скрывайте за хттп авторизацию админку и другие важные скрипты

ВСЁ, что касается кэшей и буферов - проверяйте каждый параметр отдельно.
Лучше не используйте, если не знаете, что он делает, и лень читать справку - от значений по умолчанию хуже не будет.

Я как и вы не претендую на истину в последней инстанции по настройке серверов, все же не мой основной профиль и конечно все нужно подбирать индивидуально. Я привел специально конфиг с тестового сервера, а не боевого, на боевом все тюнится индивидуально всегда под параметры системы.
 
Под nginx выкатили модуль мониторинга сервера
Для просмотра ссылки Войди или Зарегистрируйся
в пару кликов ставится в систему, сам всё подхватывает и передаёт на дашборд на сайте.
мониторит как всю систему - проц, память, диск, так и nginx.
фронт пока подглючивает, но в целом очень достойно!
 
а сколько нужно выделять под memcached ? база данных до 20 мб в развернутом виде.

кто может помочь настроить сервер (lemp) - напишите в личку
 
если коннектишь fastcgi через сокет - то лучше делать это через upstream
Код:
html {
upstream php-upstream
{
    server      unix:/run/php/phpX-fpm.sock;
    ip_hash;
    keepalive  16;
}

      location ~ \.php$ {
                fastcgi_pass php-upstream;
                fastcgi_cache_purge on;
                fastcgi_intercept_errors off;
             
}
}
 
у меня сервер vps 2 cpu 2 gb озу стоит Debian 8 + vestacp со связкой nginx + php-fpm все это дело под 1 сайт.

Буду признателен за советы.

1. Изначально vesta нет ставит memcached - для его работы достаточно только установки?
(apt-get install memcached php5-memcache)
в конфигурации (/etc/memcached.conf) - что нужно поправить и сколько нужно престе памяти из расчета 2 гб озу ? возможно еще что-то нужно править для нормальной работы memcached ?

апд.
я так понял в /etc/php5/fpm/php.ini нужно добавить:
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"

верно?


2. Оптимизация сервера - покритикуйте, пожалуйста.

Вот мои настройки:
# Server globals
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;




# Worker config
events {
worker_connections 1024;
use epoll;
multi_accept on;
}




http {
# Main settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 1m;
client_body_timeout 1m;
client_header_buffer_size 2k;
client_body_buffer_size 256k;
client_max_body_size 100m;
large_client_header_buffers 4 8k;
send_timeout 2;
keepalive_timeout 30;
keepalive_requests 100;
reset_timedout_connection on;
server_tokens off;
server_name_in_redirect off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 512;




# Log format
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format bytes '$body_bytes_sent';
#access_log /var/log/nginx/access.log main;
access_log off;




# Mime settings
include /etc/nginx/mime.types;
default_type application/octet-stream;




# Compression
gzip on;
gzip_comp_level 9;
gzip_min_length 1000;
gzip_buffers 8 64k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
gzip_proxied any;

open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;



# Proxy settings
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;
proxy_pass_header Set-Cookie;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;




# SSL PCI Compliance
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";




# Error pages
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 502 503 504 /error/50x.html;




# Cache
proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=512m;
proxy_cache_key "$host$request_uri $cookie_user";
proxy_temp_path /var/cache/nginx/temp;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_valid any 3d;


map $http_cookie $no_cache {
default 0;
~SESS 1;
~wordpress_logged_in 1;
}




# Wildcard include
include /etc/nginx/conf.d/*.conf;


server {

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)$ {
expires max;
}
}

}

[client]
port=3306
socket=/var/run/mysqld/mysqld.sock

[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
symbolic-links=0
log_error=/var/log/mysql/error.log

skip-external-locking
key_buffer_size = 64M
max_allowed_packet = 16M
thread_cache_size = 16
table_open_cache = 250
sort_buffer_size = 2M
read_buffer_size = 256K
join_buffer_size = 2M
tmp_table_size = 32M
max_heap_table_size = 16M
read_rnd_buffer_size = 512K
net_buffer_length = 8K
thread_stack = 256K

query_cache_size = 32M
query_cache_limit = 2M
query_cache_type = ON

myisam_recover = BACKUP
myisam_sort_buffer_size = 8M
concurrent_insert = 2

innodb_file_per_table
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 8M
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT

max_connections = 70
connect_timeout = 5
max_user_connections = 30
wait_timeout = 30
interactive_timeout = 50
long_query_time = 5
Заменил следующие значения:
cgi.fix_pathinfo=1 заменил 1 на 0
max_execution_time 90
upload_max_filesize 200
post_max_size 200
max_input_vars 20000
memory_limit 768
 
Последнее редактирование:
какого прокси вместо пхпцги ?
апач как прокси ?
ничего по нжинкс конфигу не понятно. что ? куда ? для чего ...
- максимум на кеш - без ревалидейта..
-aio threads?
-mysql memcached ?
 
Назад
Сверху