出于太过可怕的原因...我正在使用 Nginx 作为 Web 服务器,并希望它为内部用户(比如在 10.0.0.0/16)提供一个页面,并为其他 IP 地址上的外部用户提供另一个页面。
例如:
IP 为 10.0.0.34 的“内部”PC 访问 company.com/page.html 获取页面 internal.html
IP 为 8.8.8.8 的“外部”PC 访问 company.com/page.html 获取页面 external.html
答案1
使用 Nginx地理模块。它允许您根据客户端 IP 地址设置变量的值。geo
指令必须位于以下http
部分:
http {
geo $client {
default extra;
10.0.0.0/8 intra;
}
您可以稍后在位置中使用它来查找文件
location / {
try_files $uri.$client $uri = 404;
}
这意味着,Nginx 将根据客户端的 IP 设置为$client
或extra
。intra
假设它是 Intranet 客户端。如果客户端请求page.html
,Nginx 将搜索文件/your/root/page.html.intra
。如果没有这样的文件,它将搜索/your/root/page.html
。如果找不到这两个文件,Nginx 将返回 404“未找到”响应。有关“try_files”的更多信息,请参阅文档
顺便说一下,index
指令也支持变量。例如
index index.$client.html index.html;