Назад | Перейти на главную страницу

Правила перезаписи Wordpress поддомена Nginx - APC FPC - Медленно как черепаха. Зачем?

Работает на Ubunty 10.04 Nginx (один из последних) с мультисайтом поддомена Wordpress с использованием плагина.

APC У меня последняя версия, такая же, как и на php, у меня 4 веб-сайта почти без трафика (30 обращений в день на каждом), а облачный сервер со стойкой (2 ГБ оперативной памяти, базовая модель) кажется нормальным. Работает, но

1) Я использую плагины batcache, apc, но я не уверен, сколько памяти им предоставить, в настоящее время 128 мегабайт. Я установил APC на 128 мегабайт из-за ошибок в журнале, запрашивающего больше памяти, и смотрю ниже, как это выглядит. http://i.imgur.com/dKTmz.jpg <--- изображение графика страницы apc.php

2) javascript не архивируется.

3) index.php находится внутри каждого URL-адреса, и если его удалить, wordpress выдает ошибки.

Ниже приведены мои файлы cfg, пожалуйста, помогите мне увидеть, чего не хватает, я просмотрел 50 страниц nginx для конфигов и адаптировал эту из них, так как ни один из них не подходил для моей установки

nginx.cfg

user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
      use epoll; #v1
     # multi_accept on; #v1
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
      #tcp_nodelay off; #v1
    tcp_nodelay on; #v2
    server_tokens off;

    include mime.types;

    default_type  application/octet-stream;
    index index.php index.htm index.html redirect.php;

    keepalive_timeout 15;
    keepalive_requests 2000;
    types_hash_max_size 2048;

    ##necessary if using a multi-site plugin
    server_name_in_redirect off;
    ##necessary if running Nginx behind a reverse-proxy
    port_in_redirect off;
    server_names_hash_bucket_size 64;

    open_file_cache max=1000 inactive=300s;
    open_file_cache_valid 360s;
    open_file_cache_min_uses 2;
    open_file_cache_errors off;

    client_body_buffer_size 128K;
    client_header_buffer_size 1k;
    client_max_body_size 2m;
    large_client_header_buffers 4 8k;

    client_body_timeout   10m;
    client_header_timeout 10m;
    send_timeout          10m;

    ##
    # Logging Settings
    ##

    error_log /var/log/nginx/error.log;
        access_log off;

    ##
    # Gzip Settings
    ##

    gzip on;

    gzip_vary on;
    gzip_proxied any; #v2
      #gzip_proxied     expired no-cache no-store private auth; #v1
    gzip_comp_level 6;
    gzip_min_length  1000;
    gzip_buffers 32 8k; #v1
   # gzip_buffers 16 8k; #v2
    gzip_http_version 1.1;

    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Fast cgi
    ##

  #  fastcgi_intercept_errors on;
  #  fastcgi_ignore_client_abort on;
  #  fastcgi_buffers 8 16k;
   # fastcgi_buffer_size 32k;
 #   fastcgi_read_timeout 120;
    #fastcgi_index  index.php;
#
  #  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;


    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

доступные сайты

map $host $wp_dir_id {
        .my-website-with-id-1-in-wordpress.com      1;
        site2.com      2;
        site3.com      3;
        site4.com      4;
}
server {
        ## Ports
        listen          80;

        ## server name
        # . acts as wildcard

        server_name     .my-website-with-id-1-in-wordpress.com;

        ## root

        root            /var/www/;

        ## global rewrites
        # WordPress Network sites files (map is above)

        if ( $wp_dir_id != 1 )
        {
                rewrite ^/files/(.*)$ /wp-content/blogs.dir/$wp_dir_id/files/$1 last;
        }
        # fallback if site is not mapped
        if ( $wp_dir_id = 1 )
        {
                rewrite ^(.*)/files/(.*)$ /wp-includes/ms-files.php?file=$2 last;
        }
        ## locations

        location / {
                # enable browser cache for images
                # not location, because this applies for PHP served images as well in WP Network
                if ( $uri ~ \.(ico|gif|jpg|jpeg|png)$  ) {
                        expires 31d;
                        add_header Pragma public;
                        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }

                # enable browser cache for css / js
                # not location, because this applies for PHP served files as well in WP Network
                if ( $uri ~ \.(css|js)$  ) {
                        expires 7d;
                        add_header Pragma public;
                        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }
                # default uri
                try_files $uri $uri/ @rewrites;
        }
        # rewrite rules
        location @rewrites {
                rewrite ^(.*)$ /index.php?q=$1 last;
        }
        ## hide files starting with .
        location ~ /\. {
                deny all;
                log_not_found off;
        }
        ## enable nginx status screen, optional
        location /nginx_status {
                stub_status on;
        }
        ## pass to PHP5-FPM server in the background
        location ~ .php {
                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_FILENAME         $document_root$fastcgi_script_name;
                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;
                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_index                           index.php;
                fastcgi_connect_timeout                 60;
                fastcgi_send_timeout                    180;
                fastcgi_read_timeout                    180;
                fastcgi_buffer_size                     128k;
                fastcgi_buffers                         4       256k;
                fastcgi_busy_buffers_size               256k;
                fastcgi_temp_file_write_size            256k;
                fastcgi_intercept_errors                on;
                fastcgi_ignore_client_abort             on;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                   #fastcgi_pass    127.0.0.1:9000;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
}

Я частично могу ответить, так как через день или два чтения

1) APC все еще так же фрагментирован, как ссылка на изображение выше. Я попытаюсь добраться до него, и если я выясню, что вызывает фрагментацию, но самые большие фрагментированные файлы - это плагины batcache и apc для wordpress.

2) javascript не получал gzip-архив, потому что он был отправлен как application / javascript, и я увидел, что у меня уже было два javascript в моем cfg, включая text / javascript (который я всегда считал javascript по умолчанию.

Итак, теперь все, что выходит с сервера, получает гзимед. Итак, после того, как я добавил application / javascript в строку, начинающуюся с 'gzip_types' в первом блоке кода в моем вопросе, javascript начал работать.

3) index.php не переписывался, так как у меня не было всех правил перезаписи nginx для мультисайтов поддоменов (есть 3 основных правила для получения хороших постоянных ссылок). Однако это вызвало дополнительную проблему, для которой я открою новый вопрос.

Это три строки перезаписи, а у меня была только последняя

rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
rewrite ^/(.*)$ /index.php?q=$1 last;