質問: nginxマルチサイトリライトルール 新しい _ nginx _ installで書き換え規則に問題があります。このように手動で画像にアクセスすると、incredible.devpreview.co/wp-content/blogs.dir/2/files/2011/05/stockvault-colorful-illustration108811.jpgそれは現れます、しかしwordpressはここでそれを探しています:incredible.devpreview.co/files/2011/05/stockvault-colorful-illustration108811.jpgこれが私のnginx設定ファイルの内容です:server { listen 80; server_name www.devpreview.co; rewrite ^/(.*) http://devpreview.co/$1 permanent; } server { listen 80; server_name devpreview.co *.devpreview.co; access_log /var/www/devpreview.co/logs/access.log; error_log /var/www/devpreview.co/logs/error.log; location / { root /var/www/devpreview.co/public/; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^.+/?(/wp-.*) $1 last; rewrite ^.+/?(/.*\.php)$ $1 last; rewrite ^(.+)$ /index.php?q=$1 last; } } location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { root /var/www/devpreview.co/public/; rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$/wp-includes/ms-files.php?file=$1 last; expires 30d; break; }
回答: 以下に概説したnginx multisiteメソッドはテストされており、multiciteサブドメインのインストール用に動作し、ドメインマッピングプラグインでも動作します。将来の変更を行うプロセスを簡単にするために、サーバーファイルは3つの別々のファイルに編成されています。 1つ目はnginx.confで、これは基本設定を保持し、サーバーに仮想ホストの場所を指示します。nginx.confuser www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; include mime.types; default_type application/octet-stream; index index.php index.htm index.html redirect.php; #gzip gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; 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; #fastcgi 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/sites-enabled/*; } 次のファイルは、グローバルなwordpressのインクルードとなり、すべての書き換え規則を保持します。wp-multi.conferror_page 404 = @wordpress; log_not_found off; location / { try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } rewrite ^/files/(.+) /wp-includes/ms-files.php?file=$1 last; location ^~ /files/ { rewrite ^.*/files/(.+)$ /wp-includes/ms-files.php?file=$1 last; } # rewrite multisite '.../wp-.*' and '.../*.php'. if (!-e $request_filename) { rewrite ^/[_0-9a-za-z-]+(/wp-.*) $1 last; rewrite ^/[_0-9a-za-z-]+(/.*\.php)$ $1 last; } location @wordpress { fastcgi_pass php; fastcgi_param script_filename $document_root/index.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_name $fastcgi_script_name; fastcgi_param script_filename $document_root$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; fastcgi_pass 127.0.0.1:9000; fastcgi_param script_name /index.php; } location ~ \.php$ { try_files $uri @wordpress; fastcgi_index index.php; fastcgi_pass php; fastcgi_param script_filename $document_root$fastcgi_script_name; 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_name $fastcgi_script_name; fastcgi_param script_filename $document_root$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; fastcgi_pass 127.0.0.1:9000; } 3番目のファイルは私たちのバーチャルホストです。ドメインマッピングプラグインを使用している場合は、ドメインマッピングサイトごとに1行を含めることができます。必要に応じて、このファイルに静的サイトを追加することもできます。server { listen 80; #add a server_name entry for each mapped domain server_name star.main-multisite-domain.com *.main-multisite.com; server_name mapped-domain.com www.mapped-domain.com; server_name mapped-domain-2.com www.mapped-domain-2.com; server_name mapped-domain-3.com www.mapped-domain-3.com; root /srv/www/wordpress/public; access_log /srv/www/wordpress/logs/access.log; error_log /srv/www/wordpress/logs/error.log; index index.php index.html index.htm; #the multisite rules are in the include below include global-wp-multi.conf; } #begin static non wp sites #repeat the vhosts below for each additional static site. make sure you make each one a root directory server { server_name static-non-wp-domain.com www.static-non-wp-domain.com; root /srv/www/static-non-wp-domain/public; error_log /srv/www/static-non-wp-domain/logs/error.log; index index.php index.html index.htm; } nginxでwordpressを使用することに関する更なる読みについては、 wordpressパフォーマンスサーバー - nginx - debian "squeeze" を参照してください。