Azure云服务上的WebRole的自定义端口号

时间:2018-01-30 16:22:57

标签: azure azure-cloud-services

我现有的云服务运行良好。它使用2个端点(http 80& https 443)

我尝试在端口4443上添加新端点,但它无法访问,当我尝试访问此端口上的网站时,我收到了ERR_CONNECTION_TIMED_OUT。

这里是csdef:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="MyWebRole" vmsize="Small">
    <Sites>
       <Site name="Web">
        <Bindings>
          <Binding name="httpsN" endpointName="httpsN" />
          <Binding name="httpsIn" endpointName="httpsIn" />
          <Binding name="httpIn" endpointName="http" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="httpsN" protocol="https" port="4443" certificate="myCert" />
      <InputEndpoint name="httpsIn" protocol="https" port="443" certificate="myCert" />
      <InputEndpoint name="http" protocol="http" port="80" />
    </Endpoints>
    <Certificates>
      <Certificate name="myCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WebRole>
</ServiceDefinition>

2 个答案:

答案 0 :(得分:1)

您的配置正确无误。您现在必须确保某些内容实际上正在侦听Web角色中的该端口。

这是我的Web角色的远程桌面会话,请注意LISTENING州。

PS> netstat -an | select-string '443'

  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:4443           0.0.0.0:0              LISTENING

我用PowerShell伪造了两个听众:

$listener1 = [System.Net.Sockets.TcpListener]4443
$listener1.Start();

$listener2 = [System.Net.Sockets.TcpListener]443
$listener2.Start();

nmap从互联网上扫描:

$ nmap -vvv -p 4443,443,80 multiendpointwebrole.cloudapp.net -Pn

Starting Nmap 6.47 ( http://nmap.org )
...
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https
4443/tcp open  pharos

所有三个听众都可以访问。

.csdef

...
<Bindings>
  <Binding name="Binding1" endpointName="Endpoint1" />
  <Binding name="Binding2" endpointName="Endpoint2" />
  <Binding name="Binding3" endpointName="Endpoint3" />
</Bindings>
...
<Endpoints>
  <InputEndpoint name="Endpoint1" protocol="http" port="80" />
  <InputEndpoint name="Endpoint2" protocol="tcp" port="4443" />
  <InputEndpoint name="Endpoint3" protocol="tcp" port="443" />
</Endpoints>
...

对两个端口和protocol="https"进行了测试,并且还有适当的证书,

$ curl -kIi https://multiendpointwebrole.cloudapp.net/
HTTP/2 403
content-length: 1233
content-type: text/html
server: Microsoft-IIS/10.0
x-powered-by: ASP.NET
date: Tue, 30 Jan 2018 20:13:27 GMT


$ curl -kIi https://multiendpointwebrole.cloudapp.net:4443/
HTTP/2 403
content-length: 1233
content-type: text/html
server: Microsoft-IIS/10.0
x-powered-by: ASP.NET
date: Tue, 30 Jan 2018 20:13:43 GMT

// Ignore the 403, i had no index page.

嘿,来自Windows Server 2016的免费HTTP / 2支持!微软有多好。

答案 1 :(得分:-2)

注意:您可以定义多个端点,这些端点是HTTP,HTTPS,UDP和TCP端点的组合。您可以指定为输入端点选择的任何端口号,但为服务中的每个角色指定的端口号必须是唯一的。例如,如果指定Web角色使用HTTP端口80和HTTPS端口443,则可以指定第二个Web角色使用端口8080表示HTTP,端口8043表示HTTPS。

有关详细信息,请参阅“Azure Cloud Services – WebRole Schema”。