Nginx的子域WordPress重写规则 – APC FPC – 作为一只乌龟慢。 为什么?

运行在Ubunty 10.04 Nginx(最新之一)与WordPress的子域多站点使用插件。

APC我有最新版本与PHP相同,我运行4个网站几乎没有stream量(每天30点击每个)和云服务器rackspace(2gig ram,基本模型)似乎50%ram使用是正常的。 它的工作,但

1)我正在使用batcache,apc插件,但是我不确定给他们多less内存,目前是128megs。 我把APC放在128兆,因为日志中的错误要求更多的内存,下面看看它的外观。 http://i.imgur.com/dKTmz.jpg <— apc.php页面图的图像

2)JavaScript没有得到gzipped。

3)index.php是每一个单一的url,如果删除wordpress引发错误。

下面是我的cfg文件,请帮我看看丢失了什么,我查看了50个nginx页面的configuration文件,并对其进行了修改,因为它们都不适合我的设置

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没有得到gzipped,因为它是作为应用程序/ JavaScript发送的,我看到我有两个JavaScript在我的cfg alreeady包括文本/ JavaScript(我一直认为是默认的JavaScript。

所以,现在一切从服务器上得到了gzimed。 所以当我在我的问题的第一个代码块中的'gzip_types'开头添加了应用程序/ JavaScript后,JavaScript开始工作。

3)index.php没有得到重写,因为我没有所有的子域多站点的nginx重写规则(有3个主要的获得漂亮的perma链接)。 然而,这引起了一个额外的问题,我将提出一个新的问题。

这是三个重写行,我只有最后一个

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