9

IIS7を使用して、外部IPアドレスを「メンテナンス中のサイト」ページに送信するときに、内部プライベートネットワークIPのアドレスを自分のWebサイトに送信するにはどうすればよいですか。

これまでのIIS7で、IISに「IPv4アドレスとドメインの制限」という名前のセクションがあり、それに3つの内部範囲を許可範囲として追加できます。簡単そうです。次に、他のすべてのトラフィックを、作成したapp_offline.htmlなどの静的ページに転送するにはどうすればよいですか。(実際にはapp_offline.htmlを使用しません。これにより、内部アドレスに対してもアプリが明らかにオフラインになるためです。)

4

1 に答える 1

19

そのためにURL Rewrite ( http://www.iis.net/download/URLRewrite ) を使用できます。次に、次のような内容の web.config をドロップできます。

<configuration>
  ...
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="External IP" stopProcessing="true">
          <match url="site-under-construction\.htm" negate="true" />
          <conditions>
            <add input="{REMOTE_ADDR}" pattern="192\.168\.\d+\.\d+" ignoreCase="false" negate="true" />
            <add input="{REMOTE_ADDR}" pattern="::1" ignoreCase="false" negate="true" />
            <add input="{REMOTE_ADDR}" pattern="127\.0\.0\.1" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" url="/site-under-construction.htm" redirectType="Found" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
  ...
</configuration>

基本的には、コンテンツがまだ「建設中のサイト」ページでない場合にのみこのルールを適用し (無限のリダイレクトを防ぐため)、IP アドレスが 192.168.XXX.XXX から来ていない場合にのみこれを適用します。 (そして、localhost ではありません)。

それ以外の場合は、要求したページにアクセスできます。

Remote Addr はスプーフィングされる可能性があるため、これをセキュリティ メカニズムとして使用しないでください。ただし、シナリオでは問題ないように思われます。

于 2010-07-01T04:45:04.673 に答える