cacti を reverse proxy の後ろで運用する
cacti を reverse proxy の後ろで運用する場合のちょっとしたコツです。
reverse proxy が /cacti/ でリクエストを受け付ける場合
こんな設定で動作させる場合には、特に問題なく動きます。
location /cacti/ { proxy_pass http://back.end.ip.addr/cacti/; }
reverse proxy が /cacti/ 以外の名前でリクエストを受け付ける場合
基本的に reverse proxy 上のパスとバックエンドの web サーバーのパスを揃えてあげる必要があります。例えば reverse proxy が /saboten/
で受けて、バックエンドの /cacti/
に proxy するような……
location /saboten/ { proxy_pass http://back.end.ip.addr/cacti/; }
こんな reverse proxy の設定にすると、現状(v1.1.0)の cacti ではうまく動作しなくなります1)。
こういう場合は、バックエンド側で /saboten/
のエイリアスを設定してあげます。
# nginx の場合 server { listen back.end.ip.addr; location /saboten/ { alias /real/path/to/cacti/; } } # apache2 の場合 Listen back.end.ip.addr <VirtualHost back.end.ip.addr> Alias /saboten "/real/path/to/cacti" </VirtualHost>
その上で reverse proxy とバックエンドサーバーで共通のパスを /real/path/to/cacti/include/config.php の $url_path
に設定します。
$url_path = '/saboten/';
1)
cacti ソースの中で、何か所か php の
$_SERVER{'REQUEST_URI'}
を javascript の画面リフレッシュ用のパラメータとして設定しているため、ブラウザーが /cacti/some.php をリクエストしてしまいます。