====== 05 Docker Nginx reverse proxy ====== Docker Nginxでリバースプロキシ [[06_virtualization:05_container:02_dcoker_composer|docker-compose install]] ===== docker-compose.yml ===== version: '3' services: reverse-proxy: image: nginx volumes: - ./reverse-proxy/nginx.conf:/etc/nginx/nginx.conf ports: - 8088:80 ==== 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 ==== 下記upstream_cache_statusを設定した場合のステータス一覧 # レスポンスヘッダにキャッシュヒットしたかどうかを含める add_header X-Nginx-Cache $upstream_cache_status; |HIT|正しくキャッシュが効いた| |BYPASS|proxy_cache_bypass が 1である場合。キャッシュしないになってる| |MISS|キャッシュがないのでオリジナルサーバに取りに行ったとき| |EXPIRED|キャッシュが存在するが期限切れの場合| ==== tmpfsをキャッシュディレクトリへ ==== === fstabへ追加 === tmpfs /tmpfs tmpfs defaults,size=1024m,noatime,mode=1777 0 0 === マウント === mkdir /tmpfs mount /tmpfs === docker-compose.yml === これで、tmpfsにnginxのキャッシュが入るようになります。 version: '3' services: reverse-proxy: image: nginx volumes: - ./reverse-proxy/nginx.conf:/etc/nginx/nginx.conf - /tmpfs:/var/cache ports: - 8088:80 {{tag>Nginx Docker Proxy}}