Nginx中URL不区分大小写

本模块允许在Nginx中直接执行Prel,或者通过SSI调用Perl。

默认是不会编译进Nginx的,如果你要使用,则要在编译安装Nginx指定:

 ./configure  --with-http_perl_module

另外:操作系统中必须安装:Perl5.6.1以上版本

已知问题:

    1 ) 如果Perl模块执行长时间操作,例如:DNS查询、数据库查询等,运行Perl脚本的工作进程将一直处于阻塞状态,因此内置的Perl脚本应该非常简单,执行尽可能快。

    2)Nginx在通过“Kill -HUP <pid>”命令重新加载配置文件时,可能会导致内存泄露。

详细配置方法:

1.增加一个方法

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

2.增加一个判断条件

  if ($uri ~ [A-Z]){
                rewrite ^(.*)$ $url last;
        }

说明:

    Perl需要Perl 5.6.1以上版本支持.

以下为一个线上的实例:

cat site/www.test.net.conf
perl_set $url ‘
sub {
my $r = shift;
my $re = lc($r->uri);
return $re;
}
‘;
server
  {
    listen       80;
    server_name  www.test.net;
    index index.html index.htm ;
    root  /www/test/www.test.net/web20_static;
   if ($uri ~ [A-Z]){
    rewrite ^(.*)$ $url last;
    }
   location ~*\.(gif|jpg|jpeg|png|bmp|swf|ico|html|htm)$
    {
      expires      10d;
    }
    location ~*\.(js|css)?$
    {
      expires      5d;
    }
  error_page  404 = /404.htm;
    access_log  /usr/local/nginx/logs/access.log  main;
     access_log off;

 }
时间: 2024-07-28 23:00:35

Nginx中URL不区分大小写的相关文章

nginx去掉url中的index.php

使用情境:我想输入www.abc.com/a/1后,跳转到www.abc.com/index.php/a/1 配置Nginx.conf在你的虚拟主机下添加:  location / {      if (!-e $request_filename){           rewrite ^/(.*)$ /index.php/$1 last;      } } 如果你的项目入口文件在一个子目录内,则: location /目录/ {      if (!-e $request_filename){

Nginx中 Rewrite学习笔记

路由重写是Web服务器中的一个很重要的基本功能.通过路由重写,可以结构化URL,更具语义化(对SEO有益).另外,分享出去的URL可能会因程序路由变动而导致URL失效,而路由的重写可以很好的解决这类问题. 适当的使用Rewrite功能,可以更我们带来很多的好处.Nginx中Rewrite的功能是基于perl语言兼容的正则表达式,所以在编译安装nginx之前,需要安装PREC库.Nginx中Rewrite功能实现是基于ngx_http_rewrite_module,所以确保安装了此模块. Rewr

Nginx中location配置[转]

关于一些对location认识的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释不了大家平时习惯的按“先匹配正则,再匹配普通”的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,后面会详细解释). 2. location 的执行逻辑跟 location 的编辑顺序无关. 矫正:这句话不全对,

nginx中的正则表达式

1.if指令 所有的nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操作,如下: if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) { set $id $1; } 使用符号~*和~模式匹配的正则表达式: ~为区分大小写的匹配. ~*不区分大小写的匹配(匹配firefox的正则同时匹配Fir

nginx配置url重定向-反向代理

本文系统:Centos6.5_x64 三台主机:nginx主机,hostname: master.lansgg.com  IP: 192.168.10.128 apache主机,hostname: client1.lansgg.com IP:  192.168.10.129 一.nginx 地址重定向 二.nginx 反向代理 1.地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术.常用在把一串很长的网址,转成较短的网址.因为当要传播某网站时,常常因为网址太长,不好记忆:又有可能

Nginx中虚拟主机配置

一.Nginx中虚拟主机配置 1.基于域名的虚拟主机配置 1.修改宿主机的hosts文件(系统盘/windows/system32/driver/etc/HOSTS) linux : vim /etc/hosts 格式: ip地址 域名 eg: 192.168.3.172 www.gerry.com 2.在nginx.conf文件中配置server段 server {   listen 80;   server_name www.gerry.com; # 域名区分       location

测试Nginx中location的优先级!

location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ~ 开头表示区分大小写的正则匹配 ~* 开头表示不区分大小写的正则匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa, 可以被规则^~ /static/ /aa匹配到(注意是空格). !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到. 多个location配置的情况下匹配

Cento7+Nginx 之 URL重写

Cento7+Nginx  之  URL重写 我们前一篇文章写了一个Cento7+Nginx 反向代理实现多域名跳转,今天主要介绍一下Cento7+Nginx  之  URL重写, Hostname:A-S.IXMSOFT.COM IP:192.168.5.20 Role:Nginx server 我们首先准备安装Nginx仓库 Yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.

CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

1.下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Redis下载地址:wget http://download.redis.io/releases/redis-2.8.6.tar.gz 2.安装依赖包 yum install -y gcc gcc-c++ readline-devel pcre-devel openssl-devel tcl perl