nginx の proxy_set_header の継承ではまった
proxy_set_header directives issued at higher levels are only inherited when no proxy_set_header directives have been issued at a given level.
とのことなので、親設定ファイルで指定されていた proxy_set_header
の設定は、子設定ファイルのもので完全に上書きされる。差分を継承しようとしてまりがちだ。
例えば /etc/nginx/nginx.conf
には次の設定が、
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
include /etc/nginx/conf.d/*.conf;
そして /etc/nginx/conf.d/sample.conf
に次の設定があった場合、
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header
で Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto の 4 つが有効になりそうにみえる。しかし実際には X-Forwarded-Proto のみが設定されて、のこりの 3 つについては何も指定していないのと同様の挙動になる。