**ngx_http_rewrite_module模块配置**



将请求的uri基于正则表达式进行重写;

例:

   http-->https

   domain1.tld-->domain2.tld

   uri1-->uri2



指令:

    rewrite regex replacement [flag];


  • regex:正则表达式,用于匹配用户请求的uri;

  • replacement:重写之后的结果;

[flag]:

  • last:重写完成之后停止对当前的uri进一步处理,改为对新uri的新一轮处理;

  • break:重写完成之后停止对当前uri的处理,转为其后面的其他配置;

  • redirect:重写完成之后会返回客户端一个临时的重定向,由客户端对新的url重新发起请求(302);

  • permanent:重写完成之后会返回客户端一个永久的重定向,由客户端对新的url重新发起请求(301);


PCRE正则表达式元字符:

  • 字符匹配:.,[],[^]

  • 次数匹配:*,+,?,{m},{m,},{m,n}

  • 位置锚定:^,$

  • 或:|

  • 分组:(),后向引用:$1,$2...


if(condition){...}条件判断,引用新的配置上下文;


condition:比较表达式

  • ==,!=:等于,不等于;

  • ~:模式匹配,区分字符大小写;

  • ~*:模式匹配,不区分字符大小写;

  • !~:模式不匹配,区分字符大小写;

  • !~*:模式不匹配,不区分字符大小写;


文件及目录判断:

  • -f,!-f:是否存在且为普通文件;

  • -d,!-d:是否存在且为目录文件;

  • -e,!-e:是否存在;

  • -x,!-x:是否存在且可执行;

 rewrite ^(.*)$ https://$host$1 permanent;  #将http重定向至https(定义在server中)if (!-e $request_uri) {     #如果客户端请求的uri不存在时,重定向至首页文件rewrite ^ /index.php break;}if (-d $request_filename) {     #自动把客户端请求的目录文件加“/”rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;}

 


nginx中常用的参数:

  1. $args :请求中的参数;

  2. $content_length:HTTP请求信息里的“Content_Length”

  3. $content_type:HTTP请求信息里的“Content_Type”

  4. $document_root:当前请求的根路径

  5. $document_uri:与$uri相同

  6. $host:请求信息中的“Host”,如果请求中没有Host值,则等于设置的服务器名

  7. $http_user_agent:请求的客户端类型

  8. $http_cookie:请求信息中的cookie

  9. $limit_rate:限制的速率

  10. $request_body_file:客户端请求主体信息的临时文件名

  11. $request_method:客户端请求方法

  12. $remote_addr:客户端的IP地址

  13. $remote_port:客户端的端口

  14. $remote_user:客户端的用户名

  15. $request_filename:请求的文件

  16. $request_uri:客户端请求的uri包含参数

  17. $query_string:与$arg相同

  18. $scheme:请求的HTTP方法,如:http,https

  19. $server_protocol:请求使用的协议,通常是HTTP/1.0或HTTP/1.1

  20. $server_addr:服务器地址

  21. $server_name:服务器名称

  22. $server_port:请求到达服务器的端口

  23. $uri:请求中的uri不包含参数