====== 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}}