【问题标题】:IIS 503 "Service Unavailable" over HTTPS, HTTP works fine通过 HTTPS 的 IIS 503“服务不可用”,HTTP 工作正常
【发布时间】:2018-04-30 15:39:10
【问题描述】:

我有一个在 IIS 7.5 中运行的网站。当我通过 HTTP 访问该站点时,一切正常。当我通过 HTTPS 运行站点时,我立即收到 HTTP 503 错误“服务不可用”。网站使用的 SSL 证书自生成/自签名。

以下是我看到的类似问题的解决方案,适用于这种情况:

  • 用户身份已过时
    • 原因:在 HTTP 下成功运行的同一个 App Pool 与 HTTPS 一起使用
  • 应用程序池用户密码已更改
    • 原因:在 HTTP 下成功运行的同一个 App Pool 与 HTTPS 一起使用
  • 将“加载用户配置文件”设置为 false
    • 原因:这已设置为 false。同样,在 HTTP 下成功运行的同一应用程序池与 HTTPS 一起使用
  • .NET 注册表
    • 原因:站点/.NET 已经通过 HTTP 成功运行,并且站点似乎永远不会访问 .NET 代码,因为 503 错误立即返回,即使在 IIS 重置或 web.xml 之后也是如此。配置修改
  • 重新启动 IIS
    • 原因:我试过了
  • 重新启动应用程序池
    • 原因:我试过了
  • 站点 > 高级设置 > 启用的协议 > http、https
    • 原因:我试过了

【问题讨论】:

  • 在 Windows 2019 IIS 10 上得到了这个,所以问题在较新的操作系统中也仍然存在。

标签: .net http iis https iis-7.5


【解决方案1】:

this blog 上的评论者 Chad Cothern 得到了答案,并通过 BretB 链接到 this Microsoft Blog。在这种情况下,问题是端口 443 上的所有内容都已被保留,并且“阻止 W3SVC 在尝试启动站点时获得侦听端口 80 的权限。此外,在 IIS 中运行的应用程序不需要显式保留即可运行,只有非 IIS 应用程序想要使用 HTTP 来侦听请求时才需要保留 URL 命名空间。”

以下是确定这是否是问题以及如何解决的步骤:

  1. 打开命令提示符
  2. 运行:netsh http show urlacl url=https://+:443/
  3. 如果有问题,那么这就是您的问题。端口 443 已完全保留并阻止 IIS。
    • 如果需要为在 IIS 之外运行的应用程序保留端口 443,则需要使用应用程序路径注册(即http://+:443/appPath
    • 如果那里什么都没有,那么这可能不是问题所在。无需继续。
  4. 运行:netsh http delete urlacl https://+:443/
  5. 再次尝试运行您的应用程序。

注意,您也可以使用此方法检查端口 80 或任何其他端口。例如,如果保留端口 80 而未保留端口 443,则通过 HTTPS 的站点可以工作,而 HTTP 则不能。

【讨论】:

  • 只有在监控应用程序通常不以管理员身份运行时才需要保留 URL。
  • 谢谢!小提示:在后一种情况下,您可能希望检查 http://+:80/,而不是 https://+80/。
  • 注意:@Hogan 的评论帮助我(命令:netsh http show urlacl)查看所有 url 预订。我保留了导致相同问题的不同 url 变体(例如:https://localhost:443/)。针对我的具体变化的解决方案:netsh http delete urlacl url=https://localhost:443/
  • 在我的 Web 服务器上安装 Windows Admin Center 时,我遇到了同样的问题。它拦截了所有端口 443 调用,而不管使用的静态 IP 是什么,并将它们路由到 Windows Admin Center。即使在卸载 Windows Admin Center 后,问题仍然存在。运行命令 netsh http urlacl 后,我可以看到端口 443 已为 TerminalService 保留,运行 netsh http delete urlacl url=https://+:443/ 并执行 IISReset 后问题已解决
  • @mknopf 哇——我今天在 Windows Admin Center 上也发生了同样的事情。这悲剧!你让我不得不从备份中恢复。还有其他有同样问题的人,命令中最后的/ 非常重要。
【解决方案2】:

当我在 Firefox 中检查控制台时,我遇到了通过 HTTPS、HTTP 获取“503“服务不可用”的类似问题。 IIS 端的一切看起来都很好:SSL 证书、端口、站点运行等。我检查了调制解调器端口并意识到它需要启用端口 443 转发。只有端口 80 正在转发。但是因为我使用的是调制解调器品牌 CenturyLink,所以路由器的远程 GUI 管理正在使用该端口。

经验教训,如果您使用的是 CenturyLink 品牌的路由器或其他具有相同功能的公司,可能同样适用。根据此链接中的答案here,请执行以下操作:

常见错误:“定义的端口或端口范围正在被另一个端口转发或应用程序规则使用。”

如果路由器的远程 GUI 管理已占用端口 443。释放该端口:

  1. 登录 WiFi 路由器。
  2. 进入高级部分。
  3. 单击左侧菜单中远程管理下的远程 GUI。
  4. 启用远程 GUI 并将端口更改为 443 以外的端口(例如 4433),然后保存。
  5. 如果您不想启用远程 GUI,请禁用它,然后保存。

结论:

这解决了我在 HTTPS 上遇到的“503“服务不可用”问题。需要启用端口 443。

【讨论】:

    猜你喜欢
    • 2021-06-16
    • 2015-06-10
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多