我想为来自某个ip(我手头知道的建筑群的ip)以及所有其他ips服务器的普通页面提供特殊页面。
我搜索了堆栈,但发现了有关重定向规则的答案。 我不想重定向,只是用两种不同的方式回答相同的请求,这取决于ip。
我可以使用nginx执行此操作,还是必须将请求传递到我的服务器端代码并在那里处理?
---编辑---
实际流程使这一点更加明确:
所以www.mysite.com可以根据请求ip响应2个差异页面(而不是通过重定向到mysite.com/something)。
答案 0 :(得分:0)
您可以有条件地重写路径:
location <whatever> {
if ( $remote_addr == <ip> ) {
rewrite ^(.*)$ /other-path/$1 break;
}
# ... normal config here
}
进行编辑:
这就像任何重写(Apache中的mod_rewirte
)一样,因此用户不会获得任何重定向状态。它对用户是透明的。换句话说:您正在基于用户IP提供页面。
如果要为ip指定更复杂的规则,可以将它们与正则表达式~*
匹配,而不是检查相等==
。