如何使用 nginx 重定向到两个不同的域

如何使用 nginx 重定向到两个不同的域

我有一个域名 example.com,每天有 200 万次访问。这个域名没有网站内容,我只能将redirect(302)其转移到其他域名来获得推广费。

但我不希望所有这 200 万用户都访问同一个网站,也许对于其中 100 万,我会重定向到 aol.com,对于另外 100 万,我会重定向到 bestbuy.com。

如何配置我的nginx重定向到不同的域?如果有类似“ ip_hash”的东西,那就更好了!

答案1

您可以使用拆分客户端像这样:

split_clients "${remote_addr}AAA" $destination {
              50%                 aol.com;
              50%                 bestbuy.com;
}

server {
    server_name example.com;
    return 302 http://$destination/;
}

答案2

这有点不合时宜,可能有一个更干净的方法——但是你可以使用随机索引模块从目录中选择两个文件,每个文件包含一个延迟为零的元刷新到不同的 URL。

因此你的 nginx 配置将包含

location / {
    random_index on;
}

并且文档根目录将包含两个文件(例如aol.com.htmlbestbuy.com.html),其中包含类似

<html xmlns="http://www.w3.org/1999/xhtml">    
  <head>      
    <title>example.com</title>      
    <meta http-equiv="refresh" content="0;URL='http://aol.com/'" />    
  </head>    
  <body> 
    <p>This page has moved to a <a href="http://aol.com/">
      aol.com</a>.</p> 
  </body>  
</html>     

支持元刷新的浏览器将立即重定向到元标记中的 URL,因此用户只会在很短的时间内看到该消息(如果有的话)。

相关内容