nginx for windows 中虚拟主机路径设置问题

由于Windows版本的Nginx其实是在Cygwin环境下编译的,所以Nginx使用的是Cygwin的路径格式,所以在Nginx的配置文件nginx.conf中,路径既不能使用*nix的格式,也不能使用Windows系统的格式,而要使用Cygwin的格式,即: C盘的C://cygdrive/c/表示,D盘的D://cygdrive/d/表示,以次类推。例如:

我们设置访问 http://www.#yours.com 时读取D:/www/
location / {
            root  /cygdrive/d/www/; # '/cygdrive/d/' = 'D:/' in Nginx under Cygwin
            index  index.html index.htm;
        }
如果我们需要在访问 http://www.#yours.com/newsA/ 时读取目录D:/www/newsB/,那么我们需要使用Nginx的alias或rewrite等指令,例如

location /newsA/ {
            alias /cygdrive/d/www/newsB/;
        }
如果我们需要设置访问http://www.#yours.com/vip/ 时读取另一个硬盘上的东西,比如F:/www2/ ,可以这样:
location /vip/ {
            alias /cygdrive/f/www2/; #  /cygdrive/f/ for Driver F
        }
另外需要注意的是,如果你使用了FASTCGI配置PHP,那么设置fastcgi_param  SCRIPT_FILENAME这行的时候,必须使用设置的Windows路径格式,因为这里的参数值是Nginx传递给PHP使用的,而PHP只能识别Windows格式,例:
    location ~ .*/.php$ { # 注意这里老版本用的“~ /.php$”好像有问题
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  D:/www$fastcgi_script_name;
        # 这里必须使用Windows格式路径(D:/www)
        include        fastcgi_params; # 注意fastcgi_params中去掉SCRIPT_FILENAME这行
    }

你可能感兴趣的:(网站架构)