是否可以将 IIS 配置为根据传入连接的 IP 为不同的站点提供服务?

是否可以将 IIS 配置为根据传入连接的 IP 为不同的站点提供服务?

我希望为大部分互联网提供“正在进行中”页面,同时允许从几个特定的​​测试 IP 地址访问网站本身。

使用 IIS 7 可以实现吗?您将如何实现?

答案1

您可以使用 IP 和域限制模块,也可以下载并安装 URL Rewrite 2.0 模块并使用它。以下是 2 个示例:

我可能会采用以下设置:

使用IP 和域名限制

2个网站:

  1. www.website.com:无 IP 限制,“正在进行中”内容
  2. restricted.website.com:适当的 IP 限制,实际内容

然后我将使用根文档(index.aspx、index.php、default.aspx 等等)Request.UserHostName()(如果是 .NET)或$_SERVER[REMOTE_ADDR](如果是 PHP)将用户重定向到适当的 IP 地址。

使用URL 重写模块

一种可能的替代方法是使用 URL 重写模块,以 REMOTE_ADDR 属性作为条件,重写对网站的请求。

<rule name="ip-rewrite" stopProcessing="true">
  <match url="website.com" />
  <conditions logicalGrouping="MatchAny">
    <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="123.55.44.16" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="23.34.48.8" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="201.0.245.13" negate="true" />
  </conditions>
  <action type="Rewrite" url="http://www.website.com/inprogress/default.aspx" appendQueryString="false" />
</rule>

这将自动重写所有不来自 4 个预定义 IP 地址的请求,并将其重写为 /inprogress/default.aspx,而不是实际的网站

相关内容