Порт SSL для веб-сайта Azure, использующий node.js?

У меня возникают трудности с развертыванием приложения node.js в качестве веб-сайта Azure для прослушивания соответствующего порта для SSL (в среде Azure).

Обслуживание запросов SSL в любой другой среде, где у меня есть контроль над портом, не проблема и работает нормально. Я не считаю, что это проблема с кодом приложения (используя Express, FYI).

Веб-сайты Azure, по-видимому, перенаправляют трафик порта 80 с балансировщика нагрузки на любой доступный порт, который установлен в process.env.PORT переменная.

Я не вижу никакого соответствующего эквивалента в process.env для трафика SSL, несмотря на успешную загрузку сертификата на портал Azure для данного веб-сайта и настройку его привязок.

У меня такой вопрос: как я могу настроить Azure, чтобы он выдавал необходимый дескриптор файла для трафика через порт 443?

Я немного читал о том, как настроить работника в облачной службе, но он не подходит для веб-сайта.

Для справки, когда я пытаюсь слушать либо 443 или же process.env.PORT Я получаю следующую ошибку:

Application has thrown an uncaught exception and is terminated:
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1039:14)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1127:5)

1 ответ

Решение

Я предполагаю, что вы читали http://www.windowsazure.com/en-us/develop/net/common-tasks/enable-ssl/

Если я правильно понимаю, Azure выполнит https-завершение для вас. Ваше приложение / служба по-прежнему получает http-трафик.

Несмотря на это, вам все равно нужно слушать process.env.PORT, Всегда. И всегда будет получать http трафик там (не https). Если исходный клиент использовал порт 80, Azure просто передаст его вам. Если клиент использовал 443, Azure завершит https и откроет вам http-запрос.

Другие вопросы по тегам