Nginx 重写模块
Nginx是一个高性能的Web服务器和反向代理服务器,广泛用于处理HTTP请求。Nginx的重写模块(ngx_http_rewrite_module
)允许你通过重写URL来改变请求的路径,从而实现更灵活的URL管理和SEO优化。本文将详细介绍Nginx重写模块的基本概念、语法和实际应用场景。
什么是Nginx重写模块?
Nginx重写模块允许你在Nginx配置文件中定义规则,用于修改客户端请求的URL。这些规则可以基于正则表达式匹配URL,并将其重写为新的URL。重写后的URL可以用于内部重定向、外部重定向或直接返回给客户端。
主要用途
- URL美化:将复杂的URL转换为更简洁、易读的形式。
- SEO优化:通过重写URL,使搜索引擎更容易索引你的网站。
- 请求重定向:将旧URL重定向到新URL,避免404错误。
- 动态URL处理:将动态生成的URL转换为静态URL,提高性能。
Nginx 重写模块的基本语法
Nginx重写模块的核心指令是 rewrite
,其基本语法如下:
rewrite regex replacement [flag];
- regex:用于匹配URL的正则表达式。
- replacement:匹配成功后,URL将被重写为这个值。
- flag:可选参数,用于指定重写后的行为。常见的flag有:
last
:停止处理当前的重写规则,并使用重写后的URL继续匹配其他规则。break
:停止处理当前的重写规则,并使用重写后的URL继续处理请求。redirect
:返回302临时重定向。permanent
:返回301永久重定向。
示例1:简单的URL重写
假设我们有一个URL /old-page
,我们希望将其重写为 /new-page
,可以使用以下配置:
location /old-page {
rewrite ^/old-page$ /new-page permanent;
}
- 输入:
http://example.com/old-page
- 输出:
http://example.com/new-page
(301永久重定向)
示例2:使用正则表达式重写URL
假设我们有一个动态URL /product/123
,我们希望将其重写为 /product?id=123
,可以使用以下配置:
location /product {
rewrite ^/product/(\d+)$ /product?id=$1 break;
}
- 输入:
http://example.com/product/123
- 输出:
http://example.com/product?id=123
(内部重写)