将运行在Windows下的项目(如php )迁移到Linux下时,由于Windows操作系统不区分文件名大小写,因此Linux系统对大小写敏感,一些网页可能会出现404。
解决方法大致有四种:
1、网址重写
2、perl模块
3、lua模块
4、ngx_http_lower_upper_case
第一种方法是应用于具有规则的url或较少的url需要转换。 如果有很多没有规则的url,请使用以下几种方法
二、三、四种方法假设Linux系统本地文件为小写,原理是将url请求转换为小写处理
perl模块(不推荐! Nginx官网声称perl模块可能存在内存漏洞。 (安装《lnmp一键安装包》后执行以下操作) :
cdlnmp/src/nginx-1.4.4
清除已编译的nginx
获取#/usr/local/nginx/sbin/nginx-v #已编译的参数
nginx版本: nginx/1.4.4
builtbygcc4.4. 720120313 (red hat4.4.7-3) (gcc )。
TLSSNIsupportenabled
配置协议3360-- prefix=/usr/local/nginx-- user=www-- group=www-- with-http _ stub _ status _
在编译的参数后添加--with-http_perl_module,如下所示:
./configure-- prefix=/usr/local/nginx-- user=www-- group=www-- with-http _ stub _ statu s _ modu e
- with-http _ SSL _ module-- with-http _ flv _ module-- with-http _ gzip _ static _ module-with-LD
--with-http_perl_module
可能会报告以下错误:
can ' tlocateextutils/embed.pmin @ Inc (Inc contains :/usr/local/lib 64/perl5/usr/local/share/perl5/
begin failed-- compilation aborted。
./configure : error : perlmoduleextutils 33603360 embedisrequired
解决方案(CentOS ) :
yum-yinstallperl-devel perl-extutils-embed
重新编译:
化妆清洁
./configure-- prefix=/usr/local/nginx-- user=www-- group=www-- with-http _ stub _ statu s _ modu e
- with-http _ SSL _ module-- with-http _ flv _ module-- with-http _ gzip _ static _ module-with-LD
--with-http_perl_module
化妆
备份CP/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginx $ # nginx中的原始文件
服务中心
makeinstall#如果直接安装而只覆盖nginx,则会发生错误
/usr/local/nginx/sbin/nginx-t
修改主文件/usr/local/nginx/conf/nginx.conf :
perl_set$url '
子{
my$r=shift;
my$re=LC($r-uri;
返回$ re;
}
';
修改虚拟主机的配置文件。 例如,/usr/local/nginx/conf/vhost/demo.Linux eye.com.conf :
if($uri([a-z] ) )。
Rewrite^(.*$$URLlast;
}
lua模块(推荐! )
lua-Nginx-module起源于寂寞的代理zh开源项目,它在nginx中内置了Lua语言,并支持强大的Lua语法,如下所示:
cdlnmp/src
wget 3358 Lua JIT.org/download/Lua JIT-2.0.2.tar.gz
wget 3359 github.com/simpl/ngx _ devel _ kit/archive/v0.2. 19.tar.gz # ngx _ devel _ kit
wget 3359 github.com/chaos lawful/Lua-nginx-module/archive/v0.9.2. tar.gz # nginx _ Lua _ modu le
tarxzfLuaJIT-2.0.2.tar.gz
tarxzfv0.2.19.tar.gz
tarxzfv0.9.2.tar.gz
cdLuaJIT-2.0.2
制造制造安装
exportluajit _ lib=/usr/local/lib
exportluajit _ Inc=/usr/local/include/Lua JIT-2.0
cdnginx-1.4.4
清除已编译的nginx
获取#/usr/local/nginx/sbin/nginx-v #已编译的参数
nginx版本: nginx/1.4.4
builtbygcc4.4. 720120313 (red hat4.4.7-3) (gcc )。
TLSSNIsupportenabled
配置协议3360-- prefix=/usr/local/nginx-- user=www-- group=www-- with-http _ stub _ status _
重新编译Nginx :
./configure-- prefix=/usr/local/nginx-- user=www-- group=www-- with-http _ stub _ statu s _ modu e
- with-http _ SSL _ module-- with-http _ flv _ module-- with-http _ gzip _ static _ module-with-LD
- add-module=./Lua-nginx-module-0.9.2-- add-module=./ngx _ devel _ kit-0.2.19
化妆