IIS在HTTPS下出现503错误"服务不可用",HTTP正常工作。

10
我有一个在IIS 7.5 上运行的网站。当我通过HTTP访问该网站时,一切都正常。但是当我通过HTTPS运行该站点时,我立即收到HTTP 503错误“服务不可用”。网站使用的SSL证书是自生成/自签名的。
以下是类似问题的解决方案,不适用于此场景
  • 用户标识已过期
    • 原因:成功在HTTP下运行的同一应用程序池与HTTPS一起使用
  • 应用程序池用户的密码已更改
    • 原因:成功在HTTP下运行的同一应用程序池与HTTPS一起使用
  • 将“加载用户配置文件”设置为false
    • 原因:这已经设置为false。同样,成功在HTTP下运行的同一应用程序池与HTTPS一起使用
  • .NET regiis
    • 原因:网站/.NET已经成功在HTTP上运行,并且网站似乎从未触及.NET代码,因为即使在IIS重置或web.config修改后,503错误也会立即返回
  • 重新启动IIS
    • 原因:我尝试过这个方法
  • 重新启动应用程序池
    • 原因:我尝试过这个方法
  • 站点>高级设置>启用协议>http,https
    • 原因:我尝试过这个方法

1
在Windows 2019、IIS 10上遇到了这个问题,因此在更新的操作系统中仍然存在该问题。 - Sune Rievers
2个回答

31
评论员Chad Cothern在这篇博客中提供了答案,并链接到BretB的这篇Microsoft博客。 在这种情况下的问题是端口443上的一切都被保留,"防止W3SVC在尝试启动站点时获得监听端口80的权限。此外,在IIS中运行的应用程序不需要显式保留来运行,只有非IIS应用程序想要使用HTTP来监听请求时才需要保留URL名称空间。"
以下是确定是否存在此问题以及如何解决问题的步骤:
1.打开命令提示符 2.运行:netsh http show urlacl url=https://+:443/ 3.如果有东西,请检查是否为问题。端口443已完全保留并阻止了IIS。 - 如果有需要保留端口443供在IIS之外运行的应用程序,则需要使用应用程序路径进行注册(即:http://+:443/appPath) - 如果没有任何内容,则可能不是该问题。无需继续。 4.运行:netsh http delete urlacl https://+:443/ 5.再次尝试运行您的应用程序。
请注意,使用此方法还可以检查端口80或任何其他端口。例如,如果保留了端口80而未保留端口443,则HTTPS上的站点将正常工作,而HTTP将不起作用。 显示上述命令和结果

一般情况下,只有在监控应用程序未以管理员身份运行时才需要进行URL预留。 - Lex Li
谢谢!小提示:在后一种情况下,您可能希望检查http://+:80/,而不是https://+80/。 - melanie johnson
2
注意:@Hogan的评论帮助了我(命令:netsh http show urlacl)查看所有URL保留。我有一个不同的URL变体被保留,导致了相同的问题(例如:https://localhost:443/)。对于我的特定变体,解决方案是:netsh http delete urlacl url=https://localhost:443/ - David
3
当我在我的Web服务器上安装Windows Admin Center时,遇到了完全相同的问题。无论使用的静态IP是什么,它都会拦截所有的443端口呼叫并将它们路由到Windows Admin Center。即使在卸载Windows Admin Center后,问题仍然存在。运行命令"netsh http urlacl"后,我发现端口443已被保留给TerminalService,运行"netsh http delete urlacl url=https://+:443/"和"IISReset"后,问题得以解决。 - mknopf
2
@mknopf 哇 - 今天我也遇到了同样的问题,使用Windows管理中心。真是一场灾难!你救了我不用从备份中恢复。另外,任何其他遇到同样问题的人,命令中最后的 / 非常重要。 - Simon_Weaver

0

我曾经遇到过类似的问题,当我在Firefox控制台中检查时,无论是HTTPS还是HTTP都会出现“503“服务不可用”的错误。在IIS方面一切看起来都很正常:SSL证书、端口、站点运行等等。我检查了调制解调器端口,并意识到需要启用443端口转发。只有80端口正在转发。但由于我使用的是CenturyLink品牌的调制解调器,路由器的远程GUI管理正在使用该端口。

从中吸取教训,如果您使用的是由CenturyLink或其他公司品牌的路由器,可能也适用相同的方法。根据此链接中这里的答案,执行以下操作:

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

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

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

结论:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接