nginx 重定向到各种目录

nginx 重定向到各种目录

我正在寻找一种将 URL 请求重定向到各种目录的方法。

例如用户调用server.com/get.php

我希望它随机重定向到 server.com/a/get.php、server.com/b/get.php 或 server.com/c/get.php 等。

我知道有一种方法可以使用

upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }

用于将请求重定向到各种服务器。但我可以对目录执行同样的操作吗?

已更新:应该是这样吗?:

location ~ \.php$ {
        try_files $variant$uri $variant$uri/ $variant/index.php;
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

问候

答案1

你可以使用 nginx 的分割客户端模块

例如,如果您想要大致的三向分割:

http {
    split_clients "${remote_addr}AAA" $variant {
        33%     "/a";
        33%     "/b";
        *       "/c";
    }

然后在您的server块中,替换:

    try_files $uri $uri/ /index.php;

和:

    try_files $variant$uri $variant$uri/ $variant/index.php;

相关内容