Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 架构 > Nginx > 正文

CentOS下Nginx实现url请求不区分大小写

时间:2016-06-26 20:28 来源:网络整理 作者:linux系统 阅读:

CentOSNginx实现url请求区分大小写

时间:2014-07-29 02:13来源:Linux运维笔记 作者:Linux运维笔记 举报 点击:次

如果你将跑在Windows下的项目(如:php)迁移到Linux下,由于Windows操作系统中,文件名是不区分大小写的;而Linux系统是大小写敏感,会导致有些网页出现404情况。

解决方法有大概4种:
1、 url rewrite
2、 perl模块
3、 lua模块
4、 ngx_http_lower_upper_case

第一种方法适用于有规则的或者较少的url需要转换,如果有大量并无规则的请用下面几种方法

第二、三、四种方法前提是Linux系统本地文件是小写,原理是将url请求转换成小写来处理

perl模块不推荐!Nginx官网已申明perl模块存在内存漏洞的可能),方法如下(《lnmp一键安装包》安装后执行下面):

make clean #清除已经编译出的nginx# /usr/local/nginx/sbin/nginx -V #获取已编译参数 nginx version built by gcc TLS SNI support enabled configure arguments

在已经编译的参数后面加上 –with-http_perl_module , 【linux系统】 ,如下:

http_stub_status_module \ \

可能会报如下错误:

Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .). BEGIN failed--compilation aborted. ./configure: error: perl module ExtUtils::Embed is required

解决方法(CentOS):

再次编译:

make clean http_stub_status_module \ \ http_perl_module make cp service nginx stop make install #直接安装,如果只覆盖nginx,会有报错

修改配置主文件(/usr/local/nginx/conf/nginx.conf):

perl_set $url ' sub { my $r = shift; my $re = lc($r->uri); return $re; } ';

修改虚拟主机配置文件(如:/usr/local/nginx/conf/vhost/demo.linuxeye.com.conf):

rewrite }

lua模块(推荐!)
lua-nginx-module来自大牛agentzh的开源项目,在Nginx中嵌入Lua语言,使之可以支持强大Lua语法,如下:

cd lnmp/src wget httpgz wget https wget https tar xzf gz tar xzf v0gz tar xzf v0gz cd make && make install export LUAJIT_LIBlib export LUAJIT_INC

 

make clean #清除已经编译出的nginx# /usr/local/nginx/sbin/nginx -V #获取已编译参数 nginx version built by gcc TLS SNI support enabled configure arguments

重新编译Nginx:

http_stub_status_module \ ljemalloc \ make cp service nginx stop make install #直接安装,如果只覆盖nginx,可能会报错 ldconfig #重新读取库文件, 【linux系统下载】 【51运维网】 ,否则报错

修改配置文件(如:/usr/local/nginx/conf/vhost/demo.linuxeye.com.conf):

rewrite_by_lua

ngx_http_lower_upper_case模块
参考:https://github.com/replay/ngx_http_lower_upper_case

------分隔线----------------------------

  • 上一篇:NGINX防CC和DDOS攻击模块启用
  • 下一篇:Nginx 301重定向设置二种方法
  • 感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《CentOS下Nginx实现url请求不区分大小写》技术文章,《CentOS下Nginx实现url请求不区分大小写》详细使用和说明,有时《CentOS下Nginx实现url请求不区分大小写》可能不完善、敬请谅解!如果《CentOS下Nginx实现url请求不区分大小写》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    验证码:点击我更换图片