こんにちは、cloudpack の 齋藤(saitara) です。
今回はCentOSを前提としていますが、多くのUN*X系システムにおいて同様の方法で実現できるはずです。
環境の準備
tmpfsを準備する
/etc/fstab
に以下のエントリーを追加し、OSで使用できるうちの20%のメモリを tmpfs
として確保します。ディスクへの読み書きを減らし、速度向上・環境によるストレージ利用制限を回避を実現します。
tmpfs /var/cache/nginx tmpfs defaults,noatime,mode=1777,size=20% 0 0
nginxの準備
導入方法の確認
nginx公式ページにて導入方法を確認します。
Installing nginx
今回はCentOSですので、更にLinux系のページヘ進みます。
nginx: Linux packages
リポジトリの追加
リポジトリを /etc/yum.repos.d/nginx
として追加し、 yum
で取り扱える状態とします。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
リポジトリを利用してインストール
取り扱える状態になったら yum
でインストールします。
# yum update # yum install nginx -y
reverse proxy設定の追加
以下のような設定を /etc/nginx/conf.d/reverseproxy.conf
として追加します。
- TCP8080でlistenしているWebサーバがいる
- 指定した画像以外はキャッシュせずスルーで流す(HTMLなどが動的な場合こうしておくと安全です)
- http://localhost/invalidate_cached_url/%なんとか% でinvalidationしたい
proxy_cache_path /var/cache/nginx/static_file_cache levels=1:2 keys_zone=cache_static_file:128m inactive=7d max_size=512m; proxy_temp_path /var/cache/nginx/temp; upstream backend { server 127.0.0.1:8080; } server { listen 80; server_name _; location / { proxy_redirect off; set $do_not_cache 0; if ($request_method != GET) { set $do_not_cache 1; } if ($uri !~* ".(jpg|png|gif|jpeg|css|js|swf|pdf)$") { set $do_not_cache 1; } proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache cache_static_file; proxy_cache_key $scheme$host$uri$is_args$args; proxy_cache_valid 200 5m; proxy_cache_valid any 1m; 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; proxy_pass http://backend; } location ^~ /invalidate_cached_url/ { allow 127.0.0.1; deny all; proxy_cache_purge nginx_cache $arg_url; } }
元記事はこちらです。
「非常に安易なnginx reverse proxyの作り方」