手动阀

Good Luck To You!

nginx的常见rewrite规则讲解和示例

Nginx 的rewrite 指令用于根据特定的规则重写 URL,常用于实现 URL 重定向、URL 规范化和负载均衡等,以下是一些常见的rewrite 规则及其示例:

nginx的常见rewrite规则讲解和示例

基本重写规则

示例:将/old-path 重写为/new-path

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite ^/old-path$ /new-path permanent;
    }
}

在这个例子中,当用户访问http://example.com/old-path 时,会被永久重定向到http://example.com/new-path

使用正则表达式进行重写

示例:将所有以.php 结尾的请求重写为.html

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite ^(.*)\.php$ $1.html last;
    }
}

这个规则会将http://example.com/index.php 重写为http://example.com/index.html

条件重写

示例:仅在特定条件下重写 URL

server {
    listen 80;
    server_name example.com;
    location / {
        if ($request_uri ~* "^/old-path") {
            rewrite ^/old-path$ /new-path permanent;
        }
    }
}

这个配置会在请求 URI 匹配/old-path 时,将其重写为/new-path

移除 URL 中的特定部分

示例:移除 URL 中的www 前缀

server {
    listen 80;
    server_name example.com www.example.com;
    location / {
        rewrite ^/(.*)$ http://example.com/$1 permanent;
    }
}

这个规则会将http://www.example.com/anything 重写为http://example.com/anything

动态 URL 重写

示例:将查询参数转换为路径参数

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite ^/search\?q=(.*)$ /results/$1 break;
    }
}

这个规则会将http://example.com/search?q=keyword 重写为http://example.com/results/keyword

基于文件类型的重写

示例:将所有图片请求重写到一个统一的处理脚本

server {
    listen 80;
    server_name example.com;
    location ~* \.(jpg|jpeg|png|gif)$ {
        rewrite ^/images/(.*)$ /image_handler.php?file=$1 last;
    }
}

这个规则会将http://example.com/images/photo.jpg 重写为http://example.com/image_handler.php?file=photo.jpg

防止目录遍历攻击

示例:阻止访问上级目录的文件

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite ^/\.\.(/.*)?$ /forbidden.html last;
    }
}

这个规则会阻止任何试图访问上级目录的请求,并将其重定向到/forbidden.html

强制 HTTPS

示例:将所有 HTTP 请求重写为 HTTPS

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite ^ https://$host$request_uri? permanent;
    }
}

这个规则会将所有 HTTP 请求重写为 HTTPS 请求。

这些示例展示了 Nginxrewrite 指令的一些常见用法,通过灵活运用这些规则,可以实现复杂的 URL 重写和重定向逻辑。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.