Nginx rewrite 学习笔记
作者:阿圣(Sfan) 发布于:2015-1-16 23:18 Friday 分类:运维
- Nginx Rewrite 指令
- set
- if
- break
- return
- rewrite
- Nginx rewrite 执行顺序
- 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错误
/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
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上测试,一切正常....
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
SQL2005安装报错"指定的功能对于此SQL Server版本无效"
作者:阿圣(Sfan) 发布于:2011-10-21 20:45 Friday 分类:计算机
安装SQL时出现 "指定的功能对于此SQL Server版本无效"的错误.
安装程序前面的检测都是通过的.点安装后.就弹出:"指定的功能对于此SQL Server版本无效"的错误.折腾了很久.没有解决.百度的结果众说纷纭.有说要先装Tools之类的.有说与之前装的版本不符的.再折腾还是没有结果.
后来重新从FTP文件服务器下载了安装包.再安装.很顺利就安装上了
检查了一下原来的安装包.解压的时候有报错.
安装SQL2005时出现"指定的功能对于此SQL Server版本无效"错误.应该先检查下安装包是否完整 .
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
C# 不存在类型或命名空间名称“Management"
作者:阿圣(Sfan) 发布于:2011-10-15 18:31 Saturday 分类:计算机
最近在折腾C# winForm方面的程序.在网上找了一小段获取系统相关硬件信息的代码.发现报错:命名空间“System”中不存在类型或命名空间名称“Management”。是否缺少程序集引用;一直都是找网上的源码改改.拖拖控件神马的.对C#不太了解.后来才发现.需要在"解决方案->引用" 中添加引用 "System.Management";
---------------------------------------------------
N久没写日志了..从现在开始..记录一些东东..
标签: C#
这东西是神马...
作者:阿圣(Sfan) 发布于:2011-1-11 9:41 Tuesday 分类:点点滴滴
1/9去骑行去东莞的路上..拍到的.当时我正以30KM/H+的速度前行...它从路边的绿化树上窜到了路面上..我急刹车.停了下来..它并没有匆忙离开..留下了几张它的照片..也不知道是神马东西来着.?
它一直趴在那,无视我们的围观..尽情的享受着它的日光浴..
近照...
标签: 骑行