nginx 中将 beta 重定向到除特定 IP 之外的 www

nginx 中将 beta 重定向到除特定 IP 之外的 www

我有一个测试版服务器,beta.domain.com它运行良好,可用于测试目的。但是,由于它是我生活网站的完整镜像,因此它会接受对用户的销售,并让搜索引擎抓取它,因此我想要做的是将测试版限制在某些 IP(家庭和办公室),并且所有其他尝试访问它的人都将被重定向到www.domain.com

我为这个网站提供的主机运行的是 nginx,并且经过了高度定制,因此我无法实现我通常所期望的功能,但是在他们的支持文档中,他们告诉我如何从 www.domain.com 重定向到 domain.com。他们还说:

子域名将继承顶级域名的 Nginx 重写和配置规则。如果需要为子域名制定特定规则,可以使用 $host 的条件语句

将 www.domain.com 重定向到 domain.com 的主机示例

set $redirect "0";
if ($host ~* "^(.+)\.domain\.com$") { set $cursubdomain $1; }
if ($host != www.$server_name)       { set $redirect "go"; }
if ($cursubdomain = "")              { set $redirect "go${redirect}"; }
if (!-d $root_dir/$cursubdomain)     { set $redirect "go${redirect}"; }
if ($redirect = "gogo") {
  rewrite ^(.*)$ $my_http://www.$host$1 permanent;
}

我认为从上面的内容来看,这可能对重定向有好处

if ($host ~* "beta\.domain\.com$") { 
  set $redirect "1";
}

if ($redirect = "1") {
  rewrite ^(.*)$ $my_http://www.$host$1 permanent;
}

如果这确实是正确的方法,不太确定进行 IP 检查的最佳方法,例如

if ($remote_addr != 127.0.0.1) {
  set $remoteredirect "1";
}

if($remoteredirect = "1") {
   if ($redirect = "1") {
      rewrite ^(.*)$ $my_http://www.$host$1 permanent;
   }
}

这是解决此问题的最佳方法吗?还是我是否会在表现上牺牲自己?或者它是否会起作用?

相关内容