質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

Q&A

2回答

4045閲覧

60万req/時のアクセスを捌くために外部サーバーのコンテンツもキャッシュをしたい。

rera

総合スコア109

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

0グッド

3クリップ

投稿2016/03/22 23:28

Wordpress + Nginx + php-fpm の環境でNginxのリバースプロキシ+ブラウザーキャッシュを使用しています。

60万req/時を捌きたいのですが外部リンクからのjavascript、画像だったりをキャッシュしたいのですが
こういうのは可能なのでしょうか。

JMeterでテストを行うと自サーバーのコンテンツはエラーが無く順調なのですが、外部から引っ張ってきてるものがエラーを出してしまっている状況です。

参考になるか分かりませんが下記がNginxのコンフィグになります。
何かご教授いただければよろしくお願いします。

nginx.conf user nginx; worker_processes auto; worker_rlimit_nofile 150000; events { worker_connections 65535; use epoll; multi_accept on; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; tcp_nopush on; server_names_hash_bucket_size 64; keepalive_timeout 0; gzip on; gzip_disable "MSIE [1-6]\."; gzip_proxied any; gzip_min_length 1024; gzip_comp_level 6; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; proxy_max_temp_file_size 2048M; proxy_buffers 100 8k; proxy_buffer_size 8k; proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=czone:15m max_size=60g inactive=7d; proxy_temp_path /var/tmp/nginx; proxy_cache_key $scheme://$host$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; 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; set_real_ip_from 127.0.0.1; real_ip_header X-Forwarded-For; upstream xxx { ip_hash; server 127.0.0.1:8081; } include /etc/nginx/conf.d/*; }
conf.d/default.conf server { listen 80; server_name 111; charset utf-8; access_log /var/log/nginx/access_log main; error_log /var/log/nginx/error_log; root /var/www/chroot-website; client_max_body_size 1G; add_header X-Cache $upstream_cache_status; location /nginx_status { stub_status on; access_log off; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } location ~ \.ico$ { log_not_found off; access_log off; expires max; } location ~ \.(css|js)$ { proxy_pass http://xxx; charset UTF-8; access_log off; } location ~* \.(jpe?g|gif|png|ico|woff|svg|swf|inc)$ { proxy_pass http://xxx; access_log off; } location /wp-content/uploads { proxy_pass http://xxx; access_log off; } location ~ /\. { deny all; access_log off; log_not_found off; } location = /wp-config.php { deny all; access_log off; } location ~ .*\.php { proxy_pass http://xxx; } location / { set $do_not_cache 0; if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_|wordpress_logged_in" ) { set $do_not_cache 1; } if ($request_method != GET) { set $do_not_cache 1; } # mobile setting include /etc/nginx/mobile_cache_setting; proxy_cache_valid 200 302 180m; proxy_cache_valid 404 7d; proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache czone; proxy_cache_key $scheme://$host$uri$is_args$args; proxy_pass http://xxx; } } server { listen 8081; server_name 111; root /var/www/chroot-website; index index.php; access_log /var/log/nginx/access8081.log; error_log /var/log/nginx/error8081.log; location / { try_files $uri $uri/ /index.php?q=$uri&$args; location ~ /wp-content { access_log off; include /etc/nginx/php_exec; } location ~ /wp-includes { access_log off; include /etc/nginx/php_exec; } location ~ /wp-cron.php { access_log off; include /etc/nginx/php_exec; } location ~ /wp-comments { access_log off; include /etc/nginx/php_exec; } location ~ /wp-admin { access_log off; include /etc/nginx/php_exec; } location ~ /wp-login.php { access_log off; include /etc/nginx/php_exec; } include /etc/nginx/php_exec; } }
nginx/php_exec location ~\.php$ { expires off; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/03/23 00:05

外部リンクからのjavascript 画像 の情報はHTMLに記載されるはずですが、そのソースが見つかりません。情報不足では、間違えた、勘違いの回答しかできません。
rera

2016/03/23 00:15

具体的な外部サーバーのJavascriptのリンクを追加しました。
guest

回答2

0

なにか勘違いをしていたらごめんなさい。外部サーバのコンテンツはそもそも rera さんが管理しているサーバにリクエストが飛んでこないわけですからキャッシュできないですよね。それとも外部サーバのコンテンツもダウンロードしてすべて自サーバに持つようにする、ということでしょうか。外部サーバのコンテンツは外部サーバに任せた方が、ブラウザからのリクエストが分散して輻輳を防ぐことができると思うのですが。

投稿2016/03/23 00:08

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rera

2016/03/23 00:20

unau 様 回答ありがとうございます。 >>rera さんが管理しているサーバにリクエストが飛んでこない そうですよね...。 外部サーバーのJavascriptなどが60万req/時に耐えられないのでいくつかパケットが破棄(?)されちゃっているのですがこれはどうしようもないことでしょうか...。
unau

2016/03/23 00:49

自サーバ、というより、リバースプロキシや負荷分散や回線帯域などトータルの自サーバ構成が、外部サーバのコンテンツも丸抱えしてなおかつ想定するサービスレベルを維持できるのであれば、自サーバに持ってきちゃったほうがいいんでしょうね。
guest

0

サーバに保存してある 画像は、複数同時に出力するときにディスクアクセスが発生します。
”ディスクアクセス”は、昔から早くなっておらず、画像は”AWSクラウド”に移動するか

画像をメモリに常駐させる方法があります。
nginx + memcached
http://webserv.hatenablog.com/entry/2015/04/14/001805

自分サーバでなく、他の http://他社サイト/画像 であれば、自分のサーバに保管することが
キャッシュになります。

投稿2016/03/23 00:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問