前回はWordPress高速化の結果をグラフ化してまとめて見ました。
今回はWordPress向けのnginxの設定ファイルを紹介したいと思います。
システム構成
今回設定を行ったシステムは次のようになっています。
- サーバ: ServersMan@VPSスタンダード
- OS: Debian GNU/Linux 6.0.7
- Webサーバ: nginx 1.2.8
- CMS: WordPress 3.3.2
Debianの6.0.7(squeeze)を使っているので、nginxとWordPressが古いのがちょっと気になります。これはおいおいアップデートしたいと思います。
ファイルの構成
nginx設定ファイル
私のnginxの設定ファイルは、Debianの設定ファイル構成なので次のようになっています。
- /etc/nginx/
- nginx.conf : nginxの設定ファイルの本体。このファイルからさまざまな設定ファイルをさらに読み込む。
- mime.types : mime-typeの設定。特に変更は不要。
- fastcgi_params : fastcgiの設定。
- proxy_params : プロキシ・キャッシュの基本設定。
- conf.d/ : nginxの項目別の設定。このディレクトリの.confファイルは自動的にnginx.confから読み込まれ、有効になる。
-
- php-fpm.conf : php-fpmの設定ファイル
- global/ : nginxで利用する設定ファイル。必要に応じて各サイトの設定ファイルから読み込む。
- restrictions.conf : 共通の制限事項を記載したファイル
- wordpress-ms.conf : マルチサイト設定のWordPressを使うための設定ファイル
- wordpress-ms-wp-super-cache.conf : マルチサイト設定のWordPressでWP Super Cacheプラグインを使うための設定ファイル
- wordpress-proxy-cache.conf : マルチサイト設定のWordPressでプロキシ・キャッシュを使うための設定ファイル
- sites-available/ : 各サイトの設定。ngxensiteコマンドで有効にすると、sites-enabledにシンボリックリンクができる
- scratchpad-blog : このブログ(https://scratchpad.jp/)の設定ファイル
- scratchpad-blog-ssl : このブログの管理画面にSSLで接続するための設定ファイル
- scratchpad : https://scratchpad.jp/の設定ファイル
- scratchpad-books : http://books.scratchpad.jp/の設定ファイル
- scratchpad-colinux : http://colinux.scratchpad.jp/の設定ファイル
- scratchpad-debian : http://debian.scratchpad.jp/の設定ファイル
- sites-enabled/ : nginxで有効になっているサイトの設定。このディレクトリのファイルはすべてnginx.cofから読み込まれる。ngxdissiteコマンドで無効にできる。
- scratchpad-blog : sites-available/scratchpad-blogへのシンボリックリンク
- scratchpad-blog-ssl : sites-available/scratchpad-blog-sslへのシンボリックリンク
- scratchpad : sites-available/scratchpadへのシンボリックリンク
- scratchpad-books : sites-available/scratchpad-booksへのシンボリックリンク
- scratchpad-colinux : sites-available/scratchpad-colinuxへのシンボリックリンク
- scratchpad-debian : sites-available/scratchpad-debianへのシンボリックリンク
WordPressファイル
DebianでWordPressをインストールすると次のようなファイル配置になります。なお、設定ファイルは/etc/wordpress以下に置かれます
- /home/cfumylmd/public_html/scratchpad.jp/ : WordPressのベースディレクトリ
- wp-content/ : WordPressのコンテンツ関係のファイルが置かれているディレクトリ
- blogs.dir : アップロードしたブログのデータが保存されるディレクトリ。
Debianでは/var/lib/wordpress/blogs.dirへのシンボリックリンク - cache/ : WP Super Cacheプラグインがキャッシュデータを置くディレクトリ
- plugins : プラグインがインストールされるディレクトリ
- …
- blogs.dir : アップロードしたブログのデータが保存されるディレクトリ。
- wp-content/ : WordPressのコンテンツ関係のファイルが置かれているディレクトリ
- /var/lib/wordpress/blogs.dir/ : アップロードしたブログのデータが実際に保存されるディレクトリ
Debianではこのディレクトリにデータ保存されるが、私の環境では/www以下に保存するようにしている。- scratchpad.jp : /www/uploads/scratchpad.jpへのシンボリックリンク
コンテンツファイル
いろいろな経緯があり、私のサーバでは次のように各コンテンツのファイルが配置されています。
Debianのデフォルトでは/var/www以下にコンテンツファイルを置くことになっていると思いますが、私は/www以下に置くようにしています。
- /www : nginxで公開するデータを保管するディレクトリ
- scratchpad/ : https://scratchpad.jp/のデータ
- books/ : https://scratchpad.jp/のデータ。https://scratchpad.jp/books/でもアクセス可
- colinux/ : http://colinux.scratchpad.jp/のデータ。https://scratchpad.jp/colinuxでもアクセス可
- debian : http://debian.scratchpad.jp/のデータ。https://scratchpad.jp/debian/でもアクセス可
- scratchpad.jp : /home/cfumylmd/public_html/scratchpad.jpへのシンボリックリンク
- uploads/ : WordPressでアップロードしたデータが実際に格納されるディレクトリ
- scratchpad.jp/ : このブログ用にアップロードしたデータ
- favicon.ico : このブログのFaviconファイル。手動でここに置いた。
- sitemap.xml : このブログのサイトマップファイル。XML Sitemap Generatorプラグインでここにファイルができるようにしている。
- …
- scratchpad.jp/ : このブログ用にアップロードしたデータ
- scratchpad/ : https://scratchpad.jp/のデータ
nginxの設定ファイルの中身
それでは各設定ファイルをさらしていきます。
一応、動いている設定ですが、間違っているかもしれません。コピペする方はご自分の責任でお願いいたします。
nginx.conf
これはDebianのnginxパッケージをそのまま使っています。コメントだけ追記しておきます。
user www-data www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
mime.types
これはDebianのnginxパッケージをそのまま使っています。長いので省略します。
types { text/html html htm shtml; text/css css; text/xml xml rss; image/gif gif; image/jpeg jpeg jpg; application/x-javascript js; application/atom+xml atom; ...
fastcgi_params
これはDebianのnginxパッケージをそのまま使っています。
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 $request_filename; 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/$nginx_version; 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_param HTTPS $https; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;
proxy_params
これはDebianのnginxパッケージをそのまま使っています。
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
php-fpm.conf
自分で作成したファイルです。バックエンドサーバにphp_backendという名前をつけています。このバックエンドサーバにUnixドメインソケットで接続します。
# PHP処理用のバックエンドの設定 # unixドメインソケットで接続する upstream php_backend { server unix:/var/lib/php5/php-fpm.sock; }
restrictions.conf
各サイトで共通の制限事項を記載したファイルです。
# 共通の制限を記載したファイル # serverブロックからインクロードして利用する # GET|HEAD|POSTメソッドのみアクセスを許可する # (DELETE, SEARCH等はアクセス拒否) if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } # favicon.icoへのアクセスはログに記録しない location = /favicon.ico { log_not_found off; access_log off; } # robots.txtへのアクセスはログに記録しない location = /robots.txt { allow all; log_not_found off; access_log off; } # 「.」で始まるファイル(.htaccess, .htpasswd等)へのアクセスは拒否しない # ログは記録しておく location ~ /\. { deny all; } # アップロード用ディレクトリ内のphpファイルへのアクセスは拒否する # この設定はサブディレクトリもチェックするので、マルチサイト設定でも有効 # ログは記録しておく location ~* /(?:uploads|files)/.*\.php$ { deny all; } # バッファオーバフローを避けるため、上限を設定。 # 参考: http://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 25M; large_client_header_buffers 4 16k; # 怪しいサイトからのリンクは拒否 if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; }
wordpress-ms.conf
nginxでWordPressを動かすための設定ファイルです。マルチサイトに対応しています。
# マルチサイト(subdirectory/domain)のWordPress用設定を記載したファイル # serverブロックからインクロードして利用する # 参考: http://codex.wordpress.org/Nginx # 参考: http://nskw-style.com/2011/server/codex-nginx-translation-try.html # 以降に記載したルールにすべてマッチしなかった場合のデフォルトの設定 location / { index index.php; try_files $uri $uri/ /index.php?$args; } # これらのファイルはexpires headersを送りWebブラウザにキャッシュさせる # 404エラーのログは記録しない location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 24h; log_not_found off; } # WordPressディレクトリのblogs.dir以下への直接アクセスは禁止 location ^~ /blogs.dir { internal; alias /var/lib/wordpress/blogs.dir/$host ; access_log off; log_not_found off; expires max; } # マルチサイト用: # パフォーマンス向上のために、正しいサブディレクトリ構造へのシンボリックリンクを作成するプラグインを使用する。 set $cachetest "$document_root/wp-content/cache/ms-filemap/${host}${uri}"; if ($uri ~ /$) { set $cachetest ""; } if (-f $cachetest) { # URIを書き換え、以降の書き換え処理を停止する。 rewrite ^ /wp-content/cache/ms-filemap/${host}${uri} break; } if ($uri !~ wp-content/plugins) { rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last; } # キャッシュ用プラグインを使用する。 include global/wordpress-ms-wp-super-cache.conf; #include global/wordpress-ms-w3-total-cache.conf; # マルチサイト用に'.../wp-.*'と'.../*.php'を書き換える # Rewrite multisite '.../wp-.*' and '.../*.php'. if (!-e $request_filename) { rewrite /wp-admin$ $scheme://$host$uri/ permanent; rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last; rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last; } ### マルチサイト用に特定のURIを書き換え # これがないとアップロードしたjpgファイル等が見えなくなる rewrite ^/uploads/(.*)$ /wp-content/blogs.dir/$host/$1; # favicon.icoは各サイトのルート直下に置く rewrite ^/(.*)(favicon.ico$) /wp-content/blogs.dir/$host/favicon.ico; # sitemap.xmlは各サイトのルート直下に置く rewrite ^/sitemap.xml$ /wp-content/blogs.dir/$host/sitemap.xml; # すべての.phpファイルはバックエンドに送る location ~ \.php$ { # ファイルが存在しない場合は404エラー # 参照: http://forum.nginx.org/read.php?2,88845,page=3 try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_send_timeout 5m; fastcgi_read_timeout 5m; fastcgi_connect_timeout 5m; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php_backend; }
wordpress-ms-wp-super-cache.conf
nginxとWordPressのWP Super Cacheプラグインを併用するための設定ファイルです。マルチサイトに対応しています。
### WP Super Cache用のルール ### "wordpress-ms-..."ファイルからインクルードして利用する # .gzで圧縮されたコンテンツをサポートする gzip_static on; # デフォルトではWP Super Cacheキャッシュデータがあれば使用する set $supercacheuri ""; set $supercachefile "$document_root/wp-content/cache/supercache/${http_host}${uri}index.html"; if (-e $supercachefile) { set $supercacheuri "/wp-content/cache/supercache/${http_host}${uri}index.html"; } # POSTリクエストならWP Super Cacheのキャッシュデータを使わない if ($request_method = POST) { set $supercacheuri ""; } # クエリ文字列があったらWP Super Cacheのキャッシュデータを使わない if ($query_string) { set $supercacheuri ""; } # 次の特別なURIはWP Super Cacheのキャッシュデータを使わない if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $supercacheuri ""; } # コメントしたユーザだったらWP Super Cacheのキャッシュデータを使わない if ($http_cookie ~* comment_author_|wordpress_logged_in|wp-postpass_) { set $supercacheuri ""; } ### 以降 モバイルユーザの判定 ### モバイルユーザの場合はWP Super Cacheのキャッシュデータを使わない # WAP端末かどうか if ($http_x_wap_profile ~ ^[a-z0-9\"]+) { set $supercacheuri ""; } # 携帯端末かどうか(?) if ($http_profile ~ ^[a-z0-9\"]+) { set $supercacheuri ""; } # モバイルブラウザかどうか その1 if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) { set $supercacheuri ""; } # モバイルブラウザかどうか その2 if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) { set $supercacheuri ""; } # モバイルブラウザかどうか その3 if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) { set $supercacheuri ""; } # その他携帯端末・ゲーム・PDAかどうか if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) { set $supercacheuri ""; } ### モバイルユーザの判定終了 # 有効なWP Super Cacheのキャッシュデータがあれば処理終了 if ($supercacheuri) { rewrite ^ $supercacheuri break; }
wordpress-proxy-cache.conf
WordPressにnginxのプロキシ・キャッシュを提供するための設定ファイルです。
# デフォルトはproxy_cacheを使用する set $do_not_cache 0; # proxy_cacheを管理するためのキーを設定 set $proxy_cache_key " $scheme$proxy_host$request_uri"; # phpファイルの場合はproxy_cacheを使用しない if ($uri ~* "\.php$") { set $do_not_cache 1; } ### 以降 モバイルユーザの判定 ### ### WordPressの表示をモバイルと通常で切り替えている場合は、 ### モバイルユーザの場合は基本的にproxy_cacheを使用しない。 ### ### ただし、iPhone, iPod, Androidの場合は、 ### proxy_cache_keyを切り替えて別キャッシュを利用する。 # WAP端末かどうか if ($http_x_wap_profile ~ ^[a-z0-9\"]+) { set $do_not_cache 1; } # 携帯端末かどうか(?) if ($http_profile ~ ^[a-z0-9\"]+) { set $do_not_cache 1; } # モバイルブラウザかどうか その1 if ($http_user_agent ~ ^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|BlackBerry9530|LG-TU915\ Obigo|LGE \ VX|webOS|Nokia5800).*) { set $do_not_cache 1; } # モバイルブラウザかどうか その2 if ($http_user_agent ~ ^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*) { set $do_not_cache 1; } # 携帯端末かどうか if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) { set $do_not_cache 1; } # その他携帯端末・ゲーム・PDAかどうか if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) { set $do_not_cache 1; } ### モバイル端末の判定終了 ## Androidの場合は別キャッシュを使う if ($http_user_agent ~ ^.*(Android).*) { set $proxy_cache_key "mobile::$proxy_cache_key"; } ## iPhone/iPodの場合は別キャッシュを使う if ($http_user_agent ~ ^.*(iPhone|iPod).*) { set $proxy_cache_key "mobile::$proxy_cache_key"; } # コメントしたユーザだったらWP Super Cacheのキャッシュデータを使わない if ($http_cookie ~ "(wordpress_logged_in_|comment_author_)(.*)") { set $do_not_cache 1; } ### 以上の設定にしたがってproxy_cache機能を利用する location / { proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache_key $proxy_cache_key; proxy_pass http://unix:/var/lib/nginx/proxy.sock; }
scratchpad-blog
このブログ(https://scratchpad.jp/)の設定ファイルです。
### https://scratchpad.jp の設定 # コンテンツがあるローカルのトップディレクトリの設定 root /www/scratchpad.jp; # URIにファイルの指定がない場合はindex.phpを見に行く index index.php; # nginxのproxy cacheの設定 proxy_cache_path /var/cache/nginx/scratchpad.jp levels=1:2 keys_zone=scratchpad.jp:64m inactive=1d max_size=512m; proxy_cache scratchpad.jp; proxy_cache_valid 200 302 60m; # 正常時のキャッシュ有効時間は60分 include proxy_params; # 共通設定は/etc/nginx/proxy_paramsに記載 # フロントエンドの設定 server { # scratchpad.jpに対するポート80への接続を処理する listen 80; server_name scratchpad.jp; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-front-error.log warn; access_log /var/log/nginx/scratchpad-front-access.log; # proxy cacheを有効にする include global/wordpress-proxy-cache.conf; } # バックエンドの設定 server { # unixドメインソケットで接続を待つ listen unix:/var/lib/nginx/proxy.sock; server_name scratchpad.jp; try_files $uri $uri/ /index.php; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-back-error.log warn; access_log /var/log/nginx/scratchpad-back-access.log; # 共通の制限事項を設定 include global/restrictions.conf; # URI書き換えのログは記録しない rewrite_log off; # マルチサイト用WordPressの設定を有効にする include global/wordpress-ms.conf; }
scratchpad-blog-ssl
このブログにSSL接続するための設定ファイルです。
# httpsでの接続時の設定 (WordPressの管理者用画面など) server { # scratchpad.jpに対するポート443への接続を処理する listen 443; server_name scratchpad.jp; root /www/scratchpad.jp; index index.php; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-ssl-error.log warn; access_log /var/log/nginx/scratchpad-ssl-access.log; # SSLを有効にする ssl on; ssl_certificate /etc/ssl/certs/scratchpad.jp.crt; ssl_certificate_key /etc/ssl/private/scratchpad.jp.key; # 共通の制限事項を設定 include global/restrictions.conf; # マルチサイト用WordPressの設定を有効にする include global/wordpress-ms.conf; }
scratchpad
https://scratchpad.jp/の設定ファイルです。CGIがない静的なWebサイトです。
### https://scratchpad.jp の設定 server { # scratchpad.jpに対するポート80への接続を処理する listen 80; server_name scratchpad.jp; # コンテンツがあるローカルのトップディレクトリの設定 root /www/scratchpad; # URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示 index index.html index.htm; # IPアドレスでアクセスしてきたらscratchpad.jpに書き換え if ($http_host != "scratchpad.jp") { rewrite ^ https://scratchpad.jp$request_uri permanent; } # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-error.log notice; access_log /var/log/nginx/scratchpad-access.log combined; # URI書き換えのログは記録しない rewrite_log off; # https://scratchpad.jp/colinux/ → http://colinux.scratchpad.jp/ へ変更 rewrite ^/colinux/(.*) http://colinux.scratchpad.jp/$1 last; # https://scratchpad.jp/debian/ → http://debian.scratchpad.jp/ へ変更 rewrite ^/debian/(.*) http://debian.scratchpad.jp/$1 last; # https://scratchpad.jp/books/ → http://books.scratchpad.jp/ へ変更 rewrite ^/books/(.*) http://books.scratchpad.jp/$1 last; # 共通の制限事項を設定 include global/restrictions.conf; }
scratchpad-books
http://books.scratchpad.jp/の設定ファイルです。CGIがない静的なWebサイトです。
server { # book.scratchpad.jpに対するポート80への接続を処理する listen 80; server_name books.scratchpad.jp; # コンテンツがあるローカルのトップディレクトリの設定 root /www/scratchpad/books; # URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示 index index.html index.htm; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-books-error.log warn; access_log /var/log/nginx/scratchpad-books-access.log combined; # 共通の制限事項を設定 include global/restrictions.conf; }
scratchpad-colinux
http://colinux.scratchpad.jp/の設定ファイルです。CGIがない静的なWebサイトです。
server { # colinux.scratchpad.jpに対するポート80への接続を処理する listen 80; server_name colinux.scratchpad.jp; # コンテンツがあるローカルのトップディレクトリの設定 root /www/scratchpad/colinux; # URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示 index index.html index.htm; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-colinux-error.log warn; access_log /var/log/nginx/scratchpad-colinux-access.log combined; # 共通の制限事項を設定 include global/restrictions.conf; }
scratchpad-debian
http://debian.scratchpad.jp/の設定ファイルです。CGIがない静的なWebサイトです。
server { # debian.scratchpad.jpに対するポート80への接続を処理する listen 80; server_name debian.scratchpad.jp; # コンテンツがあるローカルのトップディレクトリの設定 root /www/scratchpad/debian; # URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示 index index.html index.htm; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/scratchpad-debian-error.log warn; access_log /var/log/nginx/scratchpad-debian-access.log combined; # 共通の制限事項を設定 include global/restrictions.conf; }
その他の設定ファイル
最適化にあたり、RAMディスクを使用したので、次の2行を/etc/fstabに付け加えています。
tmpfs /home/cfumylmd/public_html/scratchpad.jp/wp-content/cache tmpfs size=128m,mode=775,uid=www-data,gid=www-data 0 0 tmpfs /var/cache/nginx tmpfs size=512m,mode=775,uid=www-data,gid=www-data 0 0
まとめ
今回は私のnginx関係の設定ファイルをさらしてみました。
いろいろなサイトの情報を参考にしてこの設定にたどり着きました。正直、正しいのかどうかわからない点も有りますが、WordPressとnginxを組み合わせようという方の参考になれば幸いです。
次回はServersMan@VPSのDebianをアップデートしたいと思います。
コメント