nginx相关配置

来源:互联网 发布:apache jmeter 3.2 编辑:程序博客网 时间:2024/05/01 09:12

正则表达式匹配,其中:

~ 为区分大小写匹配 
~* 为不区分大小写匹配 
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配


文件及目录匹配,其中:

-f和!-f用来判断是否存在文件 
-d和!-d用来判断是否存在目录 
-e和!-e用来判断是否存在文件或目录 
-x和!-x用来判断文件是否可执行

flag标记有:

last 相当于Apache里的[L]标记,表示完成rewrite 
break 终止匹配, 不再匹配后面的规则 
redirect 返回302临时重定向 地址栏会显示跳转后的地址 
permanent 返回301永久重定向 地址栏会显示跳转后的地址

全局变量
下面是可以用作if判断的全局变量

  • $args : #这个变量等于请求行中的参数,同$query_string
  • $content_length : 请求头中的Content-length字段。
  • $content_type : 请求头中的Content-Type字段。
  • $document_root : 当前请求在root指令中指定的值。
  • $host : 请求主机头字段,否则为服务器名称。
  • $http_user_agent : 客户端agent信息
  • $http_cookie : 客户端cookie信息
  • $limit_rate : 这个变量可以限制连接速率。
  • $request_method : 客户端请求的动作,通常为GET或POST。
  • $remote_addr : 客户端的IP地址。
  • $remote_port : 客户端的端口。
  • $remote_user : 已经经过Auth Basic Module验证的用户名。
  • $request_filename : 当前请求的文件路径,由root或alias指令与URI请求生成。
  • $scheme : HTTP方法(如http,https)。
  • $server_protocol : 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
  • $server_addr : 服务器地址,在完成一次系统调用后可以确定这个值。
  • $server_name : 服务器名称。
  • $server_port : 请求到达服务器的端口号。
  • $request_uri : 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
  • $uri : 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
  • $document_uri : 与$uri相同。

常用正则

  • . : 匹配除换行符以外的任意字符
  • ? : 重复0次或1次
  • + : 重复1次或更多次
  • * : 重复0次或更多次
  • \d :匹配数字
  • ^ : 匹配字符串的开始
  • $ : 匹配字符串的介绍
  • {n} : 重复n次
  • {n,} : 重复n次或更多次
  • [c] : 匹配单个字符c
  • [a-z] : 匹配a-z小写字母的任意一个

小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是\转义特殊字符。



实例:

修改完成后重启nginx:

#service nginx restart//或者#/usr/local/nginx/sbin/nginx -s reload



判断不存在的目录伪静态(些处是短网址例子)

if (!-f $document_uri){    rewrite ^/([0-9a-zA-Z]+)$ /index.php?m=Index&a=jump&u=$1 last;}

域名重定向

if ($host != 'abc.com' ) { rewrite ^/(.*)$ http://abc.com/$1 permanent; }


判断手机访问
if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino") {rewrite ^(.*)/index.php?(.*)$ $i/m.php?$2 last;}


防盗链

location ~* \.(gif|jpg|png|swf|flv)$ {    valid_referers none blocked www.jefflei.com www.leizhenfang.com;    if ($invalid_referer) {        return 404;    } //防盗链}

特定路径伪静态

 if ($document_uri = '/api.php'){     rewrite ^(.*)/api.php?(.*)$ $1/index.php?m=Index&a=api&$2 last; }



    


    
0 0
原创粉丝点击