LoginSignup
15
14

More than 5 years have passed since last update.

非常に安易なnginx reverse proxyの作り方

Last updated at Posted at 2015-02-23

今回はCentOSを前提としていますが、多くのUN*X系システムにおいて同様の方法で実現できるはずです。

環境の準備

tmpfsを準備する

/etc/fstab に以下のエントリーを追加し、OSで使用できるうちの20%のメモリをtmpfsとして確保します。
ディスクへの読み書きを減らし、速度向上・環境によるストレージ利用制限を回避を実現します。

tmpfs  /var/cache/nginx    tmpfs   defaults,noatime,mode=1777,size=20%      0 0

nginxの準備

導入方法の確認

nginx公式ページにて導入方法を確認します。
http://nginx.org/en/docs/install.html
今回はCentOSですので、更にLinux系のページヘ進みます。
http://nginx.org/en/linux_packages.html

リポジトリの追加

リポジトリを /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;
    }
}
15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14