$_SERVER{'REQUEST_URI'} を javascript の画面リフレッシュ用のパラメータとして設定しているため、ブラウザーが /cacti/some.php をリクエストしてしまいます。cacti を reverse proxy の後ろで運用する場合のちょっとしたコツです。
こんな設定で動作させる場合には、特に問題なく動きます。
location /cacti/ {
proxy_pass http://back.end.ip.addr/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/';
$_SERVER{'REQUEST_URI'} を javascript の画面リフレッシュ用のパラメータとして設定しているため、ブラウザーが /cacti/some.php をリクエストしてしまいます。