Nginx重写规则详解
参考的博客有:https://www.cnblogs.com/sign-ptk/p/6723048.html
语法规则: location [=| ~ | ~ *|^~] /uri/ { … }
有4种表达1、= ; 2、~ ; 3、~* ;4、^~ ;
-
= 开头表示精确匹配
-
~ 开头表示区分大小写的正则匹配
-
~* 开头表示不区分大小写的正则匹配
-
^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
-
!~ 和 !~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
-
/ 通用匹配,任何请求都会匹配到。
-
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
-
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
server
{
listen 80;
server_name www.baidu.com;
index index.html index.htm index.php;
root /opt/lampp/htdocs/www;
rewrite ^/ http://www.c1gstudio.com/;
access_log off;
}
ReWrite语法详情
- server_name : 服务器名称(IP或者域名,不包括后面的路径)
- access_log :日志内容,上述代码中
access_log off;
意思是不记录访问日志,减轻压力
下面举个小例子
location ^~ /chuang/room/ {
root /var/www/;
index index.php;
rewrite ^(.*)$ $1;
}