You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何限制Windows服务器Web服务仅允许通过主机名访问,禁止使用IP地址访问?

如何限制Windows服务器Web服务仅允许通过主机名访问,禁止使用IP地址访问?

嗨,我来给你几个实用的方案,帮你实现这个需求,都是Windows服务器上常用的方法:

方法一:使用IIS URL重写模块(最推荐)

这是Windows IIS环境下最直接的方案,通过URL重写规则拦截所有IP地址的访问请求:

  1. 首先确保你的IIS服务器安装了URL重写模块,如果没装,可以在IIS管理器的“管理”板块里找到“Web平台安装程序”,搜索并安装URL Rewrite。
  2. 打开IIS管理器,找到你的目标Web站点,双击右侧功能视图里的“URL重写”。
  3. 点击右侧“添加规则”,选择“空白规则”,然后按以下配置:
    • 名称:随便取个好记的,比如“Block IP Access”
    • 匹配URL:选择“与模式匹配”,模式填.*,忽略大小写打勾
    • 条件:点击“添加”,输入框里填{HTTP_HOST},模式填^(\d{1,3}\.){3}\d{1,3}$(这个正则用来匹配IP地址格式),逻辑分组选“匹配任何条件”
    • 操作:选择“自定义响应”,状态码填403,状态原因填Forbidden,状态描述填Access via IP address is not allowed.
  4. 保存规则后,用IP访问站点就会直接返回403禁止访问,只有用主机名访问才能正常打开。

方法二:直接修改Web.config配置(适合ASP.NET站点)

如果你的站点是ASP.NET技术栈,也可以直接修改站点根目录下的Web.config文件,添加重写规则,效果和上面一样:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Block IP Access" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^(\d{1,3}\.){3}\d{1,3}$" />
          </conditions>
          <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Access via IP address is not allowed." />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

修改完保存,站点会自动加载新配置,不用重启IIS。

方法三:结合SSL证书强化限制(额外保障)

如果你的Web服务用了HTTPS,记得把SSL证书绑定到主机名而不是IP地址。这样用户用IP访问时,浏览器会弹出证书不匹配的错误,进一步阻止IP访问的行为,和上面的重写规则形成双重保障。

注意事项

  • 确保你的局域网DNS服务器已经正确配置了主机名到服务器IP的解析,用户的设备能正常通过主机名找到服务器。
  • 如果你的服务器有多个IP地址,要确保正则规则能覆盖所有可能的IP访问情况(上面的正则已经支持标准IPv4格式)。

备注:内容来源于stack exchange,提问作者Pablo

火山引擎 最新活动