目次

,

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 をリクエストしてしまいます。