Nginx rewrite 学习笔记

作者:阿圣(Sfan) 发布于:2015-1-16 23:18 Friday 分类:运维

  1. Nginx Rewrite 指令
    • set 
    • if
    • break 
    • return
    • rewrite
  2. Nginx rewrite 执行顺序
  3. Nginx rewrite 示例解析


 

Nginx Rewrite 指令 

 

set指令 

语法:set variable value; 

默认值:none 

作用域:server,location,if 

定义一个变量并赋值,值可以是文本,变量或者文本变量混合体。

 

 

if指令

语法:if(condition){...}

默认值:无

作用域:server,location

对给定的条件condition进行判断。如果为真,大括号内的rewrite指令将被执行。

if条件(conditon)可以是如下任何内容:

  • 一个变量名;false如果这个变量是空字符串或者以0开始的字符串;
  • 使用= ,!= 比较的一个变量和字符串
  • 是用~, ~*与正则表达式匹配的变量,如果这个正则表达式中包含},;则整个表达式需要用" 或' 包围
  • 使用-f ,!-f 检查一个文件是否存在
  • 使用-d, !-d 检查一个目录是否存在
  • 使用-e,!-e 检查一个文件、目录、符号链接是否存在
  • 使用-x,!-x 检查一个文件是否可执行

break指令

语法:break;

默认值:无

作用域:server,location,if

停止执行当前虚拟主机的后续rewrite指令集

 

 

return指令

语法:return code;

return code URL;

return URL;

默认值:无

作用域:server,location,if

停止处理并返回指定状态码(code)给客户端。

非标准状态码444表示关闭连接且不给客户端发响应头。

从0.8.42版本起,return 支持响应URL重定向(对于301,302,303,307),或者文本响应(对于其他状态码).

对于文本或者URL重定向可以包含变量

 

rewrite指令

语法:rewrite regex replacement [flag];

默认值:无

作用域:server,location,if

如果一个URI匹配指定的正则表达式regex,URI就按照replacement重写。

rewrite按配置文件中出现的顺序执行。flags标志可以停止继续处理。

如果replacement以"http://"或"https://"开始,将不再继续处理,这个重定向将返回给客户端。

flag可以是如下参数

last 停止处理后续rewrite指令集,然后对当前重写的新URI在rewrite指令集上重新查找。

break 停止处理后续rewrite指令集,并不在重新查找,但是当前location内剩余非rewrite语句和location外的的非rewrite语句可以执行。

redirect 如果replacement不是以http:// 或https://开始,返回302临时重定向

permanent 返回301永久重定向

 

Nginx rewrite 执行顺序

1.执行server块的rewrite指令(这里的块指的是server关键字后{}包围的区域,其它xx块类似)

2.执行location匹配

3.执行选定的location中的rewrite指令

如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件

 

如果循环超过10次,则返回500 Internal Server Error错误

评论(0) 引用(0) 浏览(1751)

/usr/lib64/python2.6/site-packages/_sqlitecache.so: undefined symbol: g_assertion_message_expr

作者:阿圣(Sfan) 发布于:2015-1-7 14:01 Wednesday 分类:ErrorLog

问题:

 

在CentOS release 6.5 下执行使用yum 命令时报错

[root@localhost ~]# yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   /usr/lib64/python2.6/site-packages/_sqlitecache.so: undefined symbol: g_assertion_message_expr

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq
  

阅读全文>>

评论(0) 引用(0) 浏览(2746)

KVM虚拟机中部署LVS DR模式集群

作者:阿圣(Sfan) 发布于:2013-7-28 13:15 Sunday 分类:计算机

    具体部署的步骤就不列出来了..说说我遇到的问题吧..

    结构:

        Director:            单网卡VIP配置在eth0:1,DIP 配置在 eth0上面

                VIP: eth0:1  172.16.1.36/24            

                DIP: eth0     172.16.1.112/24           

        RealServerA:eth0 172.16.1.37/24        lo:172.16.1.36/32

        RealServerB:eth0 172.16.1.38/24        lo:172.16.1.36/32

        以上三台机器是KVM 虚拟机,系统是 redhat5.8 ,虚拟机都是使用 virt-manager 图形管理工具默认参数创建的.

        Client:IP 172.16.1.254         宿主机 redhat 6.4 x86_64

      

        相关配置:  

        Director:

                ipvsadm -A -t 172.16.1.36:80 -s rr

                ipvsadm -a -t 172.16.1.36:80 -r 172.16.1.37:80 -g

                ipvsadm -a -t 172.16.1.36:80 -r 172.16.1.38:80 -g

        realServer 调整内核参数:

                echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore

                echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

        realserver 上启动 apache

        出现的情况:

            client上访问VIP 提示超时.

            点击查看原图

            Client 获取到VIP的MAC 正常为 Director 的Mac

            client:可以正常访问到 realserver  上的WEB

             Director :可以常访问到 realserver 上的WEB

             

            在其中一台 realserver上 抓包:

            点击查看原图

            看到已经完成了握手...似乎realsever 没给 client http的请求回复..

            

            各种折腾...重新新建虚拟机,把虚拟机网卡桥到物理网卡上,重新配置N遍...没找到原因..网上也没有发现有相关现象出现的..

            这个架构和环境之前一起学Linux 的童鞋已经在 redhat5.8 xen 虚拟机中部署过很多次了..都很顺利.看来问题出在KVM的网络配置上..

            到第二天,把虚拟机的网卡配置由Device model: virtio改为Device model:默认管理理程序

            Client上测试,一切正常....

              点击查看原图

            

 

 

 

标签: Linux 集群

评论(2) 引用(0) 浏览(8867)

Arduino 温度,湿度,PM检测

作者:阿圣(Sfan) 发布于:2013-4-26 13:20 Friday 分类:计算机

    去年就在x宝上买了一套Arduino  的学习套件.一直没做什么东西.

    北京的各种"霾",有了要做一个PM2.5检测小装置的想法.收集各种资料之后.X宝买各种工具和粉尘颗粒传感器.

    基本结构: Arduino +  enc28j60 + Dht11 + GP2Y1010AU0F + nokia 5110 lcd;

    材料: 1.Arduino pro mini  2.ENC28j60以太网模块 3. sharp GP2Y1010AU0F 粉尘传感器 4.DHT11数字温/湿度传感顺(这个便宜货精度太差) 5.Nokia 5110 液晶屏模块 6.过线塑料盒 7.各种工具杜帮线.

    功能如下:

                1.读取当前温度,湿度,可入肺颗粒数.并显示出来.

                2.插上网线的话.根据网络环境自动获取IP或设置预设固定IP.并把读取的当前环境数据上传到 yeelink 平台

                3.显示当前时间,(时间从网络UTC时间服务器读取)

                4.可以自己定制相关功能.自己烧写程序

 

   上几张图.

点击查看原图

启动状态.右上角一个小图标是网络状态的.

点击查看原图

温/湿度显示.

点击查看原图

PM2.5 显示

阅读全文>>

标签: Arduino

评论(5) 引用(2) 浏览(12368)

SQL2005安装报错"指定的功能对于此SQL Server版本无效"

作者:阿圣(Sfan) 发布于:2011-10-21 20:45 Friday 分类:计算机

    安装SQL时出现 "指定的功能对于此SQL Server版本无效"的错误.

    安装程序前面的检测都是通过的.点安装后.就弹出:"指定的功能对于此SQL Server版本无效"的错误.折腾了很久.没有解决.百度的结果众说纷纭.有说要先装Tools之类的.有说与之前装的版本不符的.再折腾还是没有结果.

    后来重新从FTP文件服务器下载了安装包.再安装.很顺利就安装上了

    检查了一下原来的安装包.解压的时候有报错.

    安装SQL2005时出现"指定的功能对于此SQL Server版本无效"错误.应该先检查下安装包是否完整 .

 

评论(1) 引用(1) 浏览(12439)

HP DL380 G7 SAS/STAT 控制器驱动 For Win2003 X86

作者:阿圣(Sfan) 发布于:2011-10-16 22:24 Sunday 分类:计算机

共享个阵列卡驱动,HP DL380 G7的.在官方翻了好久才下载下来哈.

HP DL380 G7 SAS/STAT 控制器驱动 For Win2003 X86

评论(0) 引用(0) 浏览(10094)

C# 不存在类型或命名空间名称“Management"

作者:阿圣(Sfan) 发布于:2011-10-15 18:31 Saturday 分类:计算机

最近在折腾C# winForm方面的程序.在网上找了一小段获取系统相关硬件信息的代码.发现报错:命名空间“System”中不存在类型或命名空间名称“Management”。是否缺少程序集引用;一直都是找网上的源码改改.拖拖控件神马的.对C#不太了解.后来才发现.需要在"解决方案->引用" 中添加引用 "System.Management";

 

---------------------------------------------------

N久没写日志了..从现在开始..记录一些东东..

标签: C#

评论(0) 引用(0) 浏览(7435)

这东西是神马...

作者:阿圣(Sfan) 发布于:2011-1-11 9:41 Tuesday 分类:点点滴滴

  1/9去骑行去东莞的路上..拍到的.当时我正以30KM/H+的速度前行...它从路边的绿化树上窜到了路面上..我急刹车.停了下来..它并没有匆忙离开..留下了几张它的照片..也不知道是神马东西来着.?

 

它一直趴在那,无视我们的围观..尽情的享受着它的日光浴..

近照...

 

标签: 骑行

评论(5) 引用(0) 浏览(7969)

Powered by emlog 湘ICP备08103487号