Работает на 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;