linux日志不区分大小写,windows系统迁移到linux下,Nginx实现url请求不区分大小写...

如果你将跑在Windows下的项目(如:php、html)迁移到Linux下,由于Windows操作系统中,文件名是不区分大小写的;而Linux系统是大小写敏感,会导致有些网页出现404情况。 解决方法有大概4种: 1、 url rewrite 2、 perl模块 3、 lua模块 4、 ngx_http_lower_upper_case 第一种方法适用于有规则的或者较少的url需要转换,如果有大量并无规则的请用下面2种方法。 第二、三、四种方法前提是Linux系统本地文件是小写,将url请求转换成小写来处理。 perl模块(不推荐!Nginx官网已申明perl模块存在内存漏洞的可能)。 个人推荐使用http_lua_module,lua-nginx-module来自alibaba的开源项目,在Nginx中嵌入Lua语言,使之可以支持强大Lua语法;Tengine自带这个模块(–with-http_lua_module,编译时加上这个参数即可),如果是Nginx,如下: 1.首先编译安装nginx_lua_module模块cd lnmp/src

wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz

wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz #ngx_devel_kit

wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.9.2.tar.gz #nginx_lua_module

tar xzf LuaJIT-2.0.2.tar.gz

tar xzf v0.2.19.tar.gz

tar xzf v0.9.2.tar.gz

cd LuaJIT-2.0.2

make && make install

export LUAJIT_LIB=/usr/local/lib

export LUAJIT_INC=/usr/local/include/luajit-2.0

2.清除已经以前编译好的nginx,同时获取以往的nginx编译参数 nginx_lua_module模块cd nginx-1.4.4

make clean #清除已经编译出的nginx

# /usr/local/nginx/sbin/nginx -V #获取已编译参数

nginx version: nginx/1.4.4

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)

TLS SNI support enabled

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

3.重新编译nginx,加入nginx_lua_module支持,在原有的编译参数后增加–add-module=../lua-nginx-module-0.9.2,即可--user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=../lua-nginx-module-0.9.2 --add-module=../ngx_devel_kit-0.2.19

make

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx$(date +%m%d) #备份nginx原文件

service nginx stop

make install #直接安装,如果只覆盖nginx,可能会报错

ldconfig #重新读取库文件,否则报错

/usr/local/nginx/sbin/nginx -t

4.修改配置文件(如:/usr/local/nginx/conf/nginx.conf):location / {

if ($uri ~ [A-Z]){

rewrite_by_lua 'return ngx.redirect(string.lower(ngx.var.uri),ngx.HTTP_MOVED_PERMANENTLY)';

}

}

第四种方法,使用ngx_http_lower_upper_case模块,也可以实现不区分大小写功能 ngx_http_lower_upper_case模块 参考:https://github.com/replay/ngx_http_lower_upper_case

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1614):oracle数据库管理

导入表 del_data文件 hr_cre文件 第二步导入 hr_popul.sql 最后导入 查询语句 创建表myemp create table myemp(id number(10),name varchar2(20) ) 运行结果 oracle管理工具 创建表myemp1 create table myemp1(id number(10) )

Warning: Multiple build commands for output file /xxx

今天注意到这个问题,如下: 在这里找到了答案:http://www.cnblogs.com/weilaikeji/archive/2013/10/15/3369709.html 解决步骤: 1.选择你的工程 2.选择target 3.点击 Build Phases 4.展开Copy Bundle Resources 5.删除里面的刚才提…

oracle之基本的sql_select语句全

查看表有哪些列 desc employees; 运行结果 基本sql语句 查询全部列 查询特定列 注意事项 算数运算符 查询伪表 select 8*4 from dual 运行结果 --查询十二个月的工资并1000 select last_name,salary,12*salary1000 from employees 运行结果 --查询日期 select sysdate,sys…

linux搭建乐网服务器,教你linux搭建web服务器

在我本机配置时间不长,不过花了好长的时间写了份配置文档,和大家分享一下,希望对大家有用LINUX发行版本:Fedora 14 , Apache .2.2安装就不说了!依然采用rpm包安装方式 ,下面进入正题:httpd.conf配置文件介绍…

oracle之基本的sql_select语句之课后练习

SQL*PLUS命令可以控制数据库吗? 否!下面的语句是否可以执行成功 可以 select last_name , job_id , salary as sal from employees; 下面的语句是否可以执行成功 可以 select * from employees; 找出下面语句中的错误 标点符号需要是英文格式下的。 select…

hihoCoder 1116 计算 (线段树)

题意 &#xff1a; 描述 现在有一个有n个元素的数组a1, a2, ..., an。 记f(i, j) ai * ai1 * ... * aj。 初始时&#xff0c;a1 a2 ... an 0&#xff0c;每次我会修改一个ai的值&#xff0c;你需要实时反馈给我 ∑f(i, j) (1 < i < j < n) 的值 mod 10007。 输入…

linux 版本的scipy,linux安装scipy

1.1。Numba的约5分钟指南 Numba是Python的即时编译器&#xff0c;它最适用于使用NumPy数组和函数以及循环的代码。使用Numba的最常用方法是通过其装饰器集合&#xff0c;可以应用于您的函数来指示Numba编译它们。当调用Numba修饰函数时&#xff0c;它被编译为机器代码“及时”执…

oracle之基本的过滤和排序数据

--查询对应的列 大于5000 select employee_id,last_name,salary from employees where salary>5000 运行结果 --查询对应的日期 select last_name,hire_date from employees where hire_date7-6月-1994 --查询对应的日期 select last_name,hire_date from employees --wh…

HDU 3435 KM A new Graph Game

和HDU 3488一样的&#xff0c;只不过要判断一下是否有解。 1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <algorithm>5 #include <vector>6 using namespace std;7 8 const int maxn 1000 10;9 const int INF 0x…

linux安全pdf,linux系统安全加固.pdf

通用 linux 系统安全加固手册系统安全加固手册1 帐户安全配置要求1 帐户安全配置要求1.1 创建/etc/shadow 影子口令文件1.1 创建/etc/shadow 影子口令文件配置项名 设置影子口令模式称执行&#xff1a;检查方法 #more /etc/shadow查看是否存在该文件1、执行备份&#xff1a;#cp…

oracle之基本的过滤和排序数据之课后练习

7. WHERE 子句紧随 FROM 子句8. 查询 last_name 为 King 的员工信息错误1: King 没有加上 单引号select first_name, last_name from employees where last_name King错误2: 在单引号中的值区分大小写select first_name, last_name from employees where last_name king正确s…

获得经纬度

//导入百度地图 1 private void initBaiDuInfo() {2 mLocationClient new LocationClient(getApplicationContext());3 setLocationOption();4 mLocationClient.registerLocationListener(myListener);5 mLocationClient.start();6 }7 8 …

linux qt getpid,[QTA] Android 动态注入原理分析

一、前言Android 的 UI 自动化测试可以通过注入式和非注入式分别实现&#xff0c;通过注入式可以更加方便地与应用进行交互。QTA 团队提供的 Android UI 自动化测试框架QT4A, 是通过动态注入的方式来获取被测应用的控件树信息等&#xff0c;从而达到自动化测试的目的。本文主要…

oracle之单行函数1

--全部小写 全部大写 全部首字母大写 select lower(ATGUIGUJAVA),UPPER(ATGUIGU Java),initcap(ATGUIGU Java) from dual -- 运行结果 --转换为小写查询 select * from employees where lower(last_name)king 运行结果 字符控制函数 --拼接 截取 长度 select CONCAT(h…

Canvas制作排序算法演示动画

tips: 形象化演示排序算法可以让初学者快速理解&#xff0c;比较好的例子&#xff1a;jun-lu的SortAnimate&#xff0c;旧金山大学的David Galles教授的算法演示课件。最近在看canvas&#xff0c;试着用jscanvas自己做了一个。 实现思路 获取输入字符串存入数组S[]中新建一个对…

oracle之单行函数2

--通用函数 --求公司员工的年薪 nvl 没有值代替 select employee_id,last_name,salary*12*(1nvl(commission_pct,0)) "annnal salary" from employees 运行结果 --输出department_id为空时候 没有部门 select last_name,nvl(to_char(department_id,99999),没有部门)…

linux vi命令 置顶,[置顶] Linux vi命令 创建文件

创建文件【vi】一、进入vi的命令vi filename :打开或新建文件&#xff0c;并将光标置于第一行首vi n filename &#xff1a;打开文件&#xff0c;并将光标置于第n行首vi filename &#xff1a;打开文件&#xff0c;并将光标置于最后一行首vi /pattern filename&#xff1a;打开…

Bootstrap中过渡效果(Transition)模态框插件的使用案例

通过使用模态框效果实现弹出框的登录效果&#xff1a; 效果图&#xff1a; <form id"formmodal" action"#"><h3>过渡效果&#xff08;Transition&#xff09;模态框插件的使用案例&#xff1a;</h3><!--按钮触发模态框--><but…

oracle之单行函数之课后练习

18. 打印出 "2009年10月14日 9:25:40" 格式的当前系统的日期和时间.select to_char(sysdate, YYYY"年"MM"月"DD"日" HH:MI:SS)from dual 注意: 使用双引号向日期中添加字符19. 格式化数字: 1234567.89 为 1,234,567.89select to_char(…

machine id linux,linux – 机器ID是uuid吗?

是的,现在.这在systemd手册中有所介绍. / etc / machine-id中的值最初不是有效的UUID,因为systemd人员最初没有编写用于生成版本4 UUID的正确代码.但此后已经修复.如果将许可证绑定到计算机ID,请注意它可以更改…> …如果有人删除/ etc / machine-id并在下次bootstrap中重新…