Я установил приложение node.js для запуска на рабочих ролях (а не на веб-роли) в облачных сервисах Azure. Все работало нормально со стандартным приложением, работающим по протоколу HTTP.Настройка конечных точек SSL для рабочих ролей node.js на Azure
Теперь я пытаюсь запустить его через SSL на HTTPS и успешно выполнил инструкции по адресу http://www.windowsazure.com/en-us/develop/nodejs/common-tasks/enable-ssl-worker-role/, но он не дал правильных результатов!
Теперь при доступе к URL-адресу через HTTP или HTTPS соединение истекает, и ничего не возвращается.
Есть ли что-нибудь, что я могу потерять или какие-либо шаги, которые не указаны в руководстве, приведенном выше?
Одна вещь, которую я заметил в руководстве, было ли линии ...
<InputEndpoint name="HttpIn" protocol="tcp" port="443" />
... на самом деле должно быть HttpsВ вместо этого? Хотя изменение этого не похоже на огромную разницу.
Обновление: вот некоторые из моих файлов конфигурации
ServiceConfiguration.cloud.cscfg
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" serviceName="*removed*" osFamily="2" osVersion="*" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="WorkerRole1">
<ConfigurationSettings />
<Instances count="1" />
<Certificates>
<Certificate name="certificateName" thumbprint="*removed*" thumbprintAlgorithm="sha1" />
</Certificates>
</Role>
</ServiceConfiguration>
ServiceDefinition.csdef
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="*removed*" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="WorkerRole1" vmsize="ExtraSmall">
<Startup>
<Task commandLine="setup_worker.cmd > log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node" />
<Variable name="RUNTIMEURL" value="http://az413943.vo.msecnd.net/node/0.8.4.exe" />
</Environment>
</Task>
<Task commandLine="node.cmd .\startup.js" executionContext="elevated" />
</Startup>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="certificateName" />
</Endpoints>
<Certificates>
<Certificate name="certificateName" storeLocation="LocalMachine" storeName="My" />
</Certificates>
<Runtime>
<Environment>
<Variable name="PORT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[@name='HttpIn']/@port" />
</Variable>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
<EntryPoint>
<ProgramEntryPoint commandLine="node.cmd .\server.js" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
</WorkerRole>
</ServiceDefinition>
Я также пробовал различные вариации на них (с меньшим количеством дополнительных тегов и атрибутов), и ничего не работает.
Атрибут 'name' - это просто имя. Атрибуты 'protocol' и' port' являются важными, и они настроены правильно в соответствии с вашей цитированной конфигурацией и документацией. Чтобы помочь вам, вам нужно вставить в свой вопрос файлы '.csdef' и' .cscfg' для вашего облачного сервиса. Возможно, вы изменили что-то еще. Указания, которые вы приводите, являются правильными и точными. – astaykov
Спасибо за разъяснения по именам. Я обновил сообщение с некоторыми файлами конфигурации. Первоначально я ничего не изменил, но поскольку он не работал, я попытался добавить несколько лишних бит (ни один из них не помог, казалось бы), пока это не будет видно выше. –