Docker Nginxでリバースプロキシ
docker-compose.yml
version: '3' services: reverse-proxy: image: nginx volumes: - ./reverse-proxy/nginx.conf:/etc/nginx/nginx.conf ports: - 8088:80
./reverse-proxy/nginx.conf
events { worker_connections 16; } http { proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h; proxy_temp_path /var/cache/nginx_tmp; server { listen 80; server_name localhost; location / { allow 192.168.0.11; deny all; proxy_redirect off; proxy_pass http://example.com:8080/; # 基本はキャッシュしない set $do_not_cache 1; # 画像のみキャッシュさせる if ($uri ~* "\.(jpg|jpeg|png|gif|css|js|ico|svg)$") { set $do_not_cache 0; } proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_ignore_headers Cache-Control; proxy_cache zone1; proxy_cache_key $uri; proxy_cache_valid 200 302 20m; proxy_cache_valid 404 10m; # レスポンスヘッダにキャッシュヒットしたかどうかを含める add_header X-Nginx-Cache $upstream_cache_status; } } }
効いてる
x-nginx-cache: HIT
効いてない
x-nginx-cache: MISS
下記upstream_cache_statusを設定した場合のステータス一覧
# レスポンスヘッダにキャッシュヒットしたかどうかを含める add_header X-Nginx-Cache $upstream_cache_status;
HIT | 正しくキャッシュが効いた |
BYPASS | proxy_cache_bypass が 1である場合。キャッシュしないになってる |
MISS | キャッシュがないのでオリジナルサーバに取りに行ったとき |
EXPIRED | キャッシュが存在するが期限切れの場合 |
/etc/fstab
tmpfs /tmpfs tmpfs defaults,size=1024m,noatime,mode=1777 0 0
mkdir /tmpfs mount /tmpfs
これで、tmpfsにnginxのキャッシュが入るようになります。
docker-compose.yml
version: '3' services: reverse-proxy: image: nginx volumes: - ./reverse-proxy/nginx.conf:/etc/nginx/nginx.conf - /tmpfs:/var/cache ports: - 8088:80