我正在寻找一种将 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;