今天用nginx做nagios web服务器,大概配置如下:
location /nagios/ {
alias /opt/nagios/share/;
index index.php;
}
location ~ ^/nagios/.+\.php$ {
rewrite /nagios/(.+\.php) /$1 break;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/nagios/share$fastcgi_script_name;
}
去掉以上配置中的rewrite语句后,访问php文件就有问题(空白),想想问题可能出在 SCRIPT_FILENAME这个值,这个值又是由 /opt/nagios/share$fastcgi_script_name 组成,所以最终问题出在$fastcgi_script_name变量上,在没有rewrite语句时$fastcgi_script_name的值是/opt/nagios/share/nagios/index.php,加入rewrite以后该变量的值就成了/opt/nagios/share/index.php,可见$fastcgi_script_name的值用了 location 后面匹配到的值,而/opt/nagios/share/nagios这样的目录是不存在的,需要用rewrite修正一下变量值去掉路径中的nagios,则一切恢复正常。