nginx 配置 alias 支持php 要加一句rewrite

今天用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,则一切恢复正常。

nginx 配置 alias 支持php 要加一句rewrite》有1个想法

  1. adz

    网上看了几篇关于php 别名的alias,楼主的这篇最有用,是原创。其他的都是乱抄的。

    回复

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据