Nginx之URL重写(rewrite)配置

大哥们在线求帮请教一下,Nginx之URL重写(rewrite)配置
最新回答
萌城少女

2025-02-24 04:31:13

Nginx URL重写(rewrite)配置详解


在Nginx中,URL重写(rewrite)配置提供了强大的功能,允许你根据特定条件修改请求的URL。这在网站结构重组、SEO优化或API路由中非常有用。以下是Nginx rewrite配置的关键指令及其使用方法。


**1. if判断指令**


语法为`if(condition){...}`,用于在特定条件下执行rewrite操作。条件可以是变量、直接比较或正则表达式。例如:



  • 当变量值为空或以0开头时,条件为假;否则为真。

  • 直接比较变量和内容使用`=`或`!=`。

  • 使用正则表达式匹配时,使用`*`进行不区分大小写的匹配。正则表达式字符串通常不需要加引号,但如果包含特殊字符如`}`或`;`,则需要加引号。


**2. break指令**


用于中断当前作用域内的Nginx配置,类似于Java中的`break`语句。可以在`server`块、`location`和`if`块中使用。


语法:`break;`


**3. if可用的全局变量**


除了常规变量外,Nginx还提供了`$host_host`变量,与`$host`不同之处在于`$host`不包含端口,而`$http_host`包含端口。


**4. return指令**


用于直接向客户端响应状态码及URL或响应体内容。语法为`return code URL;`或`return URL: `(对于302或307状态码)或`return [text];`。支持使用变量。


**5. rewrite指令**


核心指令用于正则表达式匹配并替换URI。可以在`server`块或`location`块中配置。


语法:`rewrite regex replacement [flag];`


**6. rewrite_log指令**


控制是否输出URL重写日志。默认为`off`,开启为`on`时,日志将以`notice`级别输出到`error_log`配置的文件中。


**7. set指令**


用于设置新的变量。语法为`set variable value;`,变量名前必须有`$`符号,且不能与Nginx预设的全局变量同名。


**8. uninitialized_variable_warn指令**


配置未初始化变量时是否记录警告日志。默认为`on`状态。


**9. 防盗链示例**


通过检查请求头部的`Referer`域是否匹配指定值,控制是否允许访问。


**10. 示例**


提供全面的JAVA面试资料,需要领取的读者请加入QQ群:473984645。