Proxy Protocolを覚えた
#LXD コンテナで雑に #nginx のリバースプロキシを構築してると、リモートのIPアドレスがちゃんと取得できなくてコンテナのIPアドレスがログに記録されてしまい、LAN内のIPアドレスからのリクエストならば認証をかけたくないとかやりたい場合に困る(他にもログがちゃんと残ってた方がいい)んだけど、ブリッジしてIPアドレスを振り直すのめんどいなーと思ってたらLXDの設定+nginxの設定でうまくできるようだった。
- https://lxd-ja.readthedocs.io/ja/latest/reference/devices_proxy/
- https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/
nginxの設定を書き換え
before
listen 443 ssl;
after
listen 443 ssl proxy_protocol;
set_real_ip_from [container_ip];
real_ip_header proxy_protocol;
してからネットワークデバイスを proxy_protocol 指定して作り直し
lxc config device remove nginx-proxy https
lxc config device add nginx-proxy https proxy listen=tcp:0.0.0.0:443 connect=tcp:[container_ip]:443 proxy_protocol=true
# コンテナのnginx リロード
lxc exec nginx-proxy -- systemctl reload nginx
で良い感じになった