当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪有关nginx正则的用法参考      nginx正则: ^~ 标识符后面跟一个字符串。 Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用),如:location ^~ /images/,希望对/images/这个.........
    ▪nginx实现mysql负载均衡的方法探讨      1,下载module模块 下载地址:https://nodeload.github.com/yaoweibin/nginx_tcp_proxy_module/zipball/master 解压并打上补丁:   代码示例: $ wget 'http://nginx.org/download/nginx-1.2.1.tar.gz' $ tar -xzvf nginx-1.2.1.tar.gz $ cd n.........
    ▪nginx 日期格式的修改方法及nginx平滑升级      Nginx的默认日志时间格式为: 23/Aug/2010:17:26:44 +0800 1.修改src/http/modules/ngx_http_log_module.c 第一处 修改前:   代码示例:  { ngx_string("time_local"), sizeof("28/Sep/1970:12:00:00 +0600") - 1,            .........

[1]有关nginx正则的用法参考
    来源: 互联网  发布时间: 2013-12-24

nginx正则:
^~ 标识符后面跟一个字符串。
Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用),如:location ^~ /images/,希望对/images/这个目录进行一些特别的操作,如增加expires头,防盗链等,但又想把除了这个目录的图片外的所有图片只进行增加expires头的操作,这个操作可能会用到另外一个location,例如:location ~* \.(gif|jpg|jpeg)$,这样,如果有请求/images/1.jpg,nginx如何决定去进行哪个location中的操作呢?结果取决于标识符^~,如果这样写:location /images/,这样nginx会将1.jpg匹配到location ~* \.(gif|jpg|jpeg)$这个location中,而增加了^~这个标识符后,它在匹配了/images/这个字符串后就停止搜索其它带正则的location。

= 表示精确的查找地址,如location = /它只会匹配uri为/的请求,如果请求为/index.html,将查找另外的location,而不会匹配这个,当然可以写两个location,location = /和location /,这样/index.html将匹配到后者,如果站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。

@      表示为一个location进行命名,即自定义一个location,这个location不能被外界所访问,只能用于Nginx产生的子请求,主要为error_page和try_files。

匹配符1:
 

~      为区分大小写的匹配。
~*     不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。
!~     不匹配的
!~*    不匹配的

匹配符2:
 

.     匹配除换行符以外的任意字符
\w     匹配字母或数字或下划线或汉字
\s     匹配任意的空白符
\d     匹配数字
\b     匹配单词的开始或结束
^     匹配字符串的开始
$     匹配字符串的结束

匹配符3:
 

*     重复零次或更多次
+     重复一次或更多次
?     重复零次或一次
{n}     重复n次
{n,}     重复n次或更多次
{n,m}     重复n到m次
*?     重复任意次,但尽可能少重复
+?     重复1次或更多次,但尽可能少重复
??     重复0次或1次,但尽可能少重复
{n,m}?     重复n到m次,但尽可能少重复
{n,}?     重复n次以上,但尽可能少重复

匹配符4:
 

\W     匹配任意不是字母,数字,下划线,汉字的字符
\S     匹配任意不是空白符的字符
\D     匹配任意非数字的字符
\B     匹配不是单词开头或结束的位置
[^x]     匹配除了x以外的任意字符
[^aeiou]     匹配除了aeiou这几个字母以外的任意字符

捕获     (exp)     匹配exp,并捕获文本到自动命名的组里
(?<name>exp)     匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)     匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言     (?=exp)     匹配exp前面的位置
(?<=exp)     匹配exp后面的位置
(?!exp)     匹配后面跟的不是exp的位置
(?<!exp)     匹配前面不是exp的位置
注释     (?#comment)  仅是注释内容


    
[2]nginx实现mysql负载均衡的方法探讨
    来源: 互联网  发布时间: 2013-12-24

1,下载module模块
下载地址:https://nodeload.github.com/yaoweibin/nginx_tcp_proxy_module/zipball/master

解压并打上补丁:
 

代码示例:
$ wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
$ tar -xzvf nginx-1.2.1.tar.gz
$ cd nginx-1.2.1/
$ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch  /path是指nginx_tcp_proxy_module路径
$  ./configure --add-module=/usr/local/ngx_cache_purge-1.4  --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/path/to/nginx_tcp_proxy_module   //

编译:
 

代码示例:
$ make
$ make install

2,修改nginx配置文件:
 

代码示例:
http {
server {
    listen 80;
    location /status {
check_status;
    }
}
}
tcp {
      upstream mysql{
      server 10.10.10.17:3306 weight=1;
      server 10.10.10.18:3306 weight=1;
      #check interval=3000 rise=2 fall=5 timeout=1000;
      }
      server {
      listen 3306;
      proxy_pass mysql;
 }
}

3,启动nginx进行测试,以下为测试log:
 

2013/7/16 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:31 10.10.10.18:3306 1446 4383
2013/7/16 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:32 10.10.10.17:3306 1446 4383
2013/7/16 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:32 10.10.10.18:3306 1447 4383
2013/7/16 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:33 10.10.10.17:3306 1445 4383
2013/7/16 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:33 10.10.10.18:3306 1445 4383
2013/7/16 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:34 10.10.10.17:3306 1446 4383
2013/7/16 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:34 10.10.10.18:3306 1445 4383
2013/7/16 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:35 10.10.10.17:3306 1445 4383
2013/7/16 18:22:36 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:35 10.10.10.18:3306 1445 4383
2013/7/16 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:36 10.10.10.17:3306 1446 4383
2013/7/16 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:37 10.10.10.18:3306 1446 4383
2013/7/16 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:37 10.10.10.17:3306 1445 4383
2013/7/16 18:22:38 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:37 10.10.10.18:3306 1444 4383
2013/7/16 18:22:39 [3921] 10.10.10.107 0.0.0.0:3306 2013/7/16 18:22:38 10.10.10.17:3306 1445 4383

    
[3]nginx 日期格式的修改方法及nginx平滑升级
    来源: 互联网  发布时间: 2013-12-24

Nginx的默认日志时间格式为:
23/Aug/2010:17:26:44 +0800

1.修改src/http/modules/ngx_http_log_module.c

第一处
修改前:
 

代码示例:
 { ngx_string("time_local"), sizeof("28/Sep/1970:12:00:00 +0600") - 1,
                          ngx_http_log_time },
 

修改后:
 

代码示例:
{ ngx_string("time_local"), sizeof("1970-09-28 12:00:00 +0600") - 1,
                          ngx_http_log_time },

第二处
修改前:
 

代码示例:
  return ngx_cpymem(buf, ngx_cached_http_log_time.data,
                      ngx_cached_http_log_time.len);

修改后:
 

代码示例:
  return ngx_cpymem(buf, ngx_cached_err_log_time.data,
                      ngx_cached_err_log_time.len);

2、修改 src/core/ngx_times.c 140行

修改前
 

代码示例:
 (void) ngx_sprintf(p1, "%4d/%02d/%02d %02d:%02d:%02d",
                       tm.ngx_tm_year, tm.ngx_tm_mon,
                       tm.ngx_tm_mday, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec);

修改后
 

代码示例:
    (void) ngx_sprintf(p1, "%4d-%02d-%02d %02d:%02d:%02d",
                       tm.ngx_tm_year, tm.ngx_tm_mon,
                       tm.ngx_tm_mday, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec);

效果对比:
修改前:
 

代码示例:
127.0.0.1 - - [05/Sep/2012:13:28:46 +080] "GET / HTTP/1.1" 200 151 "-" "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.5) Gecko/2008120908 Red Hat/3.0.5-1.el5_2 Firefox/3.0.5"

修改后
 

代码示例:
127.0.0.1 - - [2012-09-05 13:43:32] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.5) Gecko/2008120908 Red Hat/3.0.5-1.el5_2 Firefox/3.0.5"

附,nginx平滑升级的配置方法。

有关nginx平滑升级的文章,之前也有介绍,例如:
nginx平滑重启的方法介绍
nginx平滑升级与重启
nginx平滑重启和升级的方法介绍

本节实现将Nginx平滑升级到稳定版1.0.0。

1、下载最新的Nginx源码安装包
 

代码示例:
wget http://nginx.org/download/nginx-1.0.0.tar.gz

2、配置并编译Nginx(不要执行make install步骤)
 

代码示例:

# tar zxvf nginx-1.0.0.tar.gz

# cd nginx-1.0.0
#./configure --user=www --group=www --prefix=/web/nginx --with-http_stub_status_module --with-http_ssl_module

# make
(make编译下就OK,不要执行make install。)

3、替换旧版本的Nginx
 

代码示例:
#mv /web/nginx/sbin/nginx /web/nginx/sbin/nginx.old

备份旧版本的nginx的二进制文件。
 

代码示例:
# cd objs/

在objs目录下可以看到刚刚编译好的新版本的nginx的二进制文件。
 

代码示例:
# cp nginx /web/nginx/sbin/

复制新版本的nginx文件到你的nginx目录。

# /web/nginx/sbin/nginx -t
测试新版本的nginx是否配置正常。如果提示:
the configuration file /web/nginx/conf/nginx.conf syntax is ok
configuration file /web/nginx/conf/nginx.conf test is successful
则表示配置正确。
 

代码示例:
# kill -USR2 `cat /web/nginx/nginx.pid`
 

让nginx把nginx.pid改成nginx.pid.oldbin并接着启动新的nginx。
 

代码示例:
# kill -QUIT `cat /web/nginx/nginx.pid.oldbin`

退出旧版本的nignx。

4、确认升级是否完成
整个升级过程就完成了,最后确认一下升级是否成功。
 

代码示例:
#/web/nginx/sbin/nginx -s reload

重新加载配置。
 

代码示例:
# /web/nginx/sbin/nginx -v

获取Nginx版本信息,提示:
nginx version: nginx/1.0.0
则升级成功。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3