docker 容器内 powershell 中的端口绑定

Port binding in powershell inside docker container

我在 IIS docker 容器中托管了一个网站,它正在侦听 443。我正在尝试使用 New-WebBinding 绑定另一个端口 - 10000。但是,它不起作用。该网站在 443 时仍可访问,但在 10000 时失败。我的新绑定命令如下所示:

New-WebBinding -Name "Default Web Site" -IPAddress "*" -Port 10000 -Protocol "https"

并且 Get-WebSites 确认该端口已绑定到默认网站。

在 docker-compose 文件中,我为两个端口都设置了端口转发,对 10000 的请求甚至没有到达容器(因为我在 IIS 中没有看到任何端口 10000 的条目日志。)。我还为端口 10000 设置了入站规则。这里有什么我遗漏的吗?

那10000端口绑定你设置证书了吗? 要设置证书,您可以使用此 PowerShell 脚本:

PS C:\WINDOWS\system32> Import-Module WebAdministration

PS C:\WINDOWS\system32> cd IIS:\SslBindings PS IIS:\SslBindings> get-item cert:\LocalMachine\MYABF581E134280162AFFFC81E62011787B3B19B5 | new-item 0.0.0.0!10000 

7ABF581E134280162AFFFC81E62011787B3B19B5 是您的证书指纹。 要得到它,你可以 运行 这个命令:

 Get-ChildItem -path cert:\LocalMachine\My

如果您不想硬编码指纹,这是我使用的代码:

$cert = (Get-ChildItem cert:\LocalMachine\My | where-object { $_.Subject -like "*$hostname*" } | Select-Object -First 1).Thumbprint  
$binding = Get-WebBinding -Name "Default Web Site" -Protocol "https" -Port $port
$binding.AddSslCertificate($cert, "my")