我有一个网站www.somedomain.com
。现在,我想设置 IIS 来显示一些简单的单 html 页面,向所有访问它的用户显示“网站正在维护”或类似的内容,但同时,我希望在进入网站时拥有对网站的完全访问权限。所以基本上我想禁止除我的 IP 之外的所有 IP 使用该网站。我该怎么做?
答案1
基本 IIS 设置将允许您根据 IP 阻止/允许。如果您想根据 IP 重定向用户,您应该查看 URL 重写 (http://www.iis.net/downloads/microsoft/url-rewrite)。具体来说,就是根据 REMOTE_ADDR 条件起作用的入站规则。
答案2
验证您是否安装了‘IP 和域限制模块’,如果没有,请安装它:
start /w pkgmgr.exe /iu:IIS-IPSecurity;
仅允许您自己的IP地址访问该网站:
appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /allowUnlisted:"False" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='192.168.1.9',allowed='True']" /commit:apphost
现在其他所有人都会看到标准的 IIS“403 - 禁止:访问被拒绝”页面。
您想用自己的页面替换此页面。构建一个不依赖任何其他资源的 HTML 页面,在页面上包含 CSS 以及所有图像:
background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJ...
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEU...
您需要将图像编码为 base64,但即使没有图像您也可以创建一个足够漂亮的页面。
您也可以引用另一台服务器上的图像,但我希望保持我的错误页面独立。
将文件保存到您的网站根目录,例如:C:\inetpub\wwwroot\403.html
最后设置 IIS 以使用您的新页面:
C:\Windows\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/httpErrors
C:\Windows\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/httpErrors /[statusCode='403',subStatusCode='-1'].prefixLanguageFilePath:"" /[statusCode='403',subStatusCode='-1'].path:"403.html"
您的页面现在将显示所有 403 状态代码,而不仅仅是 IP 限制,但这不应该是一个大问题。