Назад | Перейти на главную страницу

Можно ли настроить IIS для обслуживания разных сайтов в зависимости от IP-адреса входящего соединения?

Я хочу, чтобы страница «Незавершенная работа» была доступна для большей части Интернета, при этом разрешив доступ к самому сайту с нескольких конкретных тестовых IP-адресов.

Возможно ли это с IIS 7? Как бы вы это сделали?

Вы можете использовать модуль IP и ограничения домена или загрузить и установить модуль URL Rewrite 2.0 и использовать его. Вот 2 примера:

Я бы, вероятно, выбрал следующую настройку:

С помощью Ограничения по IP и домену

2 сайта:

  1. www.website.com: без ограничений по IP, контент «в процессе»
  2. limited.website.com: соответствующие ограничения IP, фактическое содержание

Тогда у меня будет корневой документ (index.aspx, index.php, default.aspx, что угодно), перенаправляющий пользователей с соответствующими IP-адресами, используя Request.UserHostName()(если .NET) или $_SERVER[REMOTE_ADDR](если PHP).

С помощью Перезапись 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 вместо фактического веб-сайта.