nginx - 根据ip提供页面

时间:2013-12-07 10:03:15

标签: nginx static request ip

我想为来自某个ip(我手头知道的建筑群的ip)以及所有其他ips服务器的普通页面提供特殊页面。

我搜索了堆栈,但发现了有关重定向规则的答案。 我不想重定向,只是用两种不同的方式回答相同的请求,这取决于ip。

我可以使用nginx执行此操作,还是必须将请求传递到我的服务器端代码并​​在那里处理?

---编辑---
实际流程使这一点更加明确:

  • 收到www.mysite.com的请求 - >
  • 检查请求的IP - >
    • 如果ip是来自ip我事先知道 - >
      (如果我可以用ips检查ips或数组/文件的范围,那就更好了)
      • 服务inip.html< - 特殊页面
    • 否则 - >
      • 投放index.html< - 普通网页

所以www.mysite.com可以根据请求ip响应2个差异页面(而不是通过重定向到mysite.com/something)。

1 个答案:

答案 0 :(得分:0)

您可以有条件地重写路径:

location <whatever> {
    if ( $remote_addr == <ip> ) {
        rewrite ^(.*)$ /other-path/$1 break;
    }
    # ... normal config here
}

Source

进行编辑:

这就像任何重写(Apache中的mod_rewirte)一样,因此用户不会获得任何重定向状态。它对用户是透明的。换句话说:您正在基于用户IP提供页面。

如果要为ip指定更复杂的规则,可以将它们与正则表达式~*匹配,而不是检查相等==