1、Nginx 中 rewrite 实现 二级域名、三级域名、泛域名、路径的重写最常见的: 静态地址重定向到带参数的动态地址rewrite “(.*)/service/(.*).html$“ $1/service.php?sid=$2 permanent; 反过来: 带参数的动态地址重定向到静态地址if ($query_string * id=(.*) set $id $1; rewrite “(.*)/article.asp$“ $1/article/$id.htm last; 泛域名解析 view plaincopy to clipboardprint?server_name *; serv
2、er_name_in_redirect off; #设置默认 root set $rootdir /usr/local/nginx/html/w3cgroup/;#匹配三级或三级以上的域名if ($host * (.+).(.+).(.+).(.+)$) #匹配三级域名 if ($host * (.+).(.+).(.+).(.+)$) #三级域名中有访问指定的目录则重定向到相应的二级域名下 rewrite “.+upload/?(.*)$“ http:/ permanent; rewrite “.+ijc/?(.*)$“ http:/ permanent; break; #匹配二级域名 if
3、 ($host * (.+).(.+).(.+)$) set $rs1 $1; #设置 www 时 root if ($rs1 * www$) set $rootdir /usr/local/nginx/html/platform_ig/; #二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用 last rewrite “.+upload/?(.*)$“ upload/$1 last; rewrite “.+ijc/?(.*)$“ ijc/$1 last; break; #设置非 www 二级域名时 root if ($rs1 !* www$) set $rootdir /
4、usr/local/nginx/html/w3cgroup/$rs1; #二级域名中有访问指定的目录则重定向到相应的二级域名下 rewrite “.+upload/?(.*)$“ http:/ permanent; rewrite “.+ijc/?(.*)$“ http:/ permanent; break; #应用 root root $rootdir; index index.php index.html; error_page 404 http:/$host/; 注意:if () 之间需要空格,否则 Nginx.conf 会报 unknow directive 错误 ! 参考: Ngin
5、x Rewrite Flags * last 相当于 Apache 里的L标记,表示完成 rewrite* break 终止匹配, 不再匹配后面的规则* redirect 返回 302 临时重定向* permanent 返回 301 永久重定向 Nginx 正则表达式匹配 * 为区分大小写匹配* * 为不区分大小写匹配* !和!* 分别为区分大小写不匹配及不区分大小写不匹配Nginx 文件及目录匹配 * -f 和!-f 用来判断是否存在文件* -d 和!-d 用来判断是否存在目 录* -e 和!-e 用来判断是否存在文件或目录* -x 和!-x 用来判断文件是否可 执行 Nginx 全局变量
6、view plaincopy to clipboardprint?$args $content_length $content_type $document_root $document_uri $host $http_user_agent $http_cookie $limit_rate $request_body_file $request_method $remote_addr $remote_port $remote_user $request_filename $request_uri $query_string $scheme $server_protocol $server_addr $server_name $server_port $uri