2013-05-14 72 views
0

我们有一个网页,当我们把它放在维护或更新的时候,我们会把它放在我们的网站上。基本的伪代码逻辑看起来像这样:NGINX重定向,不重写IP和目录以外的网址

if IP != 72.56.43.212 and location !~ /down then 
    display down/ 

网址保持不变是很重要的。例如,

Address Bar: http://www.example.com/abcd.html 
Page Shown: http://www.example.com/down 

我对NGINX配置还很新。任何帮助表示赞赏。

+0

所以只是想知道,你为什么要检查的位置!=下来?为什么不使用IP? –

+0

我需要排除下来,所以它不会进入重定向循环,重写它被重写到的url。 – eisaacson

回答

0
location /down { 
    #empty block 
} 
location/{ 
    if ($remote_addr != 72.56.43.212) { 
     rewrite^/down/index.php last; 
    } 
} 
0
if ($remote_addr != "1.1.1.1") { 
    rewrite . /down last; 
} 
+0

这解决了其中一个问题。有3个需要同时解决。有了这个解决方案,我会得到: http://www.example.com/abcd.html ...重定向到... http://www.example.com/down ...重定向到.. 。 http://www.example.com/down ...重定向到... http://www.example.com/down ...重定向到... http://www.example。 com/down ...等等...... – eisaacson

+0

这是内部重定向,所以你会得到/ down的内容。地址行不会从/abcd.html更改。 – Jack

0

从来没有真正尝试过这个我自己,但你可以使用nginx的访问规则来做到这一点

error_page 403 http://example.com/down.html; 
location/{ 
    allow 72.56.43.212; 
    deny all; 
}