根据IP地址/子网使用Nginx来服务不同的页面

由于可怕的原因进入…我使用Nginx作为networking服务器,并希望它为内部用户(10.0.0.0/16说)和另一个页面上的外部用户在任何其他IP地址服务一页。

例如:

利用Nginx 地理模块 。 它允许您根据客户端IP地址设置variables的值。 geo指令必须在http部分:

 http { geo $client { default extra; 10.0.0.0/8 intra; } 

您可以稍后在位置使用它来查找文件

 location / { try_files $uri.$client $uri = 404; } 

也就是说,Nginx会根据客户的IP将$client设置$client extraintra 。 我们假设这是一个Intranet客户端。 如果客户要求page.html ,Nginx会search/your/root/page.html.intra文件。 如果没有这样的文件,它会search/your/root/page.html 。 如果找不到这些,Nginx会返回404“Not Found”响应。 更多关于“try_files”的文档

顺便说一句, index指令也支持variables。 例如

 index index.$client.html index.html;