在把网站的主web从apache迁移到nginx上时,遇到了些问题。
1.原来在apache每个二级域名都是用建站点的方式,我打算在nginx里面使用rewrite规则的方式来进行跳转,比如:
复制代码代码如下:
location /
{ rewrite ^(.*)life.my.com(.*)$ $1www.my.com/lan28/$2 last; }
2.原来www下面有几个alias,比如访问/wwwroot/www/php/ alias 到/wwwroot/php/ 这样,但是在nginx里面alias的话呢htm、图片等静态文件没问题,但是php问题就来了,由于php是通过正则转发到fastcgi的比如:
复制代码代码如下:
root /wwwroot/www;
location /php/ { alias /wwwroot/php/; } location ~ .*\.php?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }
这种情况下如果http访问/php/*.php文件实际上是由 location ~ .*\.php?$ 处理的,也就是说php文件根本没没有进行alias还是按照/wwwroot/www/php/的路径访问的。
复制代码代码如下:
root /wwwroot/www;
location ^~ /php/ #这里的关键就是使用“^~”,这样如果是/php/的话就不去匹配下面的php的正则,而全部重定向到php.my.com去,不然的话还是一样的htm正常,php无法访问。 { rewrite (.*)/php/(.*) http://php.my.com/$2 permanent; } location ~ .*\.php?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } 这里的http://php.my.com 对应的就是/wwwroot/www/php/。 (责任编辑:IT) |