Проблемы HTTPS в лазурном

Я импортировал проект чат-комнаты git socket.io! Код нормально работает с http = require ('http'), но при обмене на https = require ('https') мой сервер отвечает с ошибкой 500 http

var express = require('express')
  , app = express()
 // , http = require('http')
  , https = require('https')
  , fs = require('fs')

  , privateKey  = fs.readFileSync('HTTPS_Permissions/key.key', 'utf8')
  , certificate = fs.readFileSync('HTTPS_Permissions/cert.cert', 'utf8')
  , credentials = {key: privateKey, cert: certificate}
  , httpsServer = https.createServer(credentials, app)

 // , httpServer = http.createServer(app)
  , io = require('socket.io').listen(httpsServer)

  //, port = process.env.PORT || 8080
  , port = process.env.PORT


  httpsServer.listen(port, function () {
    console.info('Server listening on port %d', port);
  });

//httpServer.listen(port);

// routing
app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

Пример отсюда, правда? github.com/socketio/chat-example

Jay Gong 02.01.2019 02:52

@JayGong импортировал в лазурный портал этот git -> github.com/fern4lvarez/socketiochatrooms

Fábio Zangirolami 02.01.2019 03:13

Работает ли проект нормально локально? Вы проверили, возникла ли ошибка в самом проекте, а не в лазурном? Какие действия вы пробовали?

Jay Gong 02.01.2019 03:21

@JayGong да локально работает 100%, новичок в лазурном ... Откладываю https, сейчас тестирую http, на сервере выдается ошибка 404. Мой проект находится в «общедоступной» папке, а «узел приложения» - в папке «wwwroot», и я не могу подключиться, это дает мне ошибку 404. Если я назначу каталог виртуального пути «socket.io» e каталог физический путь site \ wwwroot \ socket.io на портале a azure возвращает мне ошибку 403. Как мне запустить сайт в подпапке вместе с node / socket.io в корневой папке?

Fábio Zangirolami 02.01.2019 03:22

@JayGong в этом примере моя структура каталогов -> i.imgur.com/w46czXG.png

Fábio Zangirolami 02.01.2019 03:29

Хорошо, попробую на своей стороне.

Jay Gong 02.01.2019 03:30

@JayGong в 'public \ index.php' вызовите скрипт <script src = "https://myproject.azurewebsites.net/socket.io/socket.io‌​.js"></script>

Fábio Zangirolami 02.01.2019 03:33

@JayGong Я только что повторно импортировал проект git .. Я создал «общедоступную» папку внутри «корня» и перекинул index.html из примера git в «общедоступную» папку. На лазурном портале я настроил виртуальный каталог «/» для физического каталога «site \ wwwroot \ public», и когда я обращаюсь к сайту, я получаю сообщение об ошибке «У вас нет разрешения на просмотр этого каталога или страницы».

Fábio Zangirolami 02.01.2019 03:42

Я не понимаю, почему пример git работает на 100% в «корневой» папке и, помещая index.html внутри «общедоступной» папки, я получаю ошибку = /

Fábio Zangirolami 02.01.2019 03:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
131
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я подписался на проект, которым вы поделились в комментарии, он работает на моей стороне.

web.config

<?xml version = "1.0" encoding = "utf-8"?>
<!--
     This configuration file is required if iisnode is used to run node processes behind
     IIS or IIS Express.  For more information, visit:

     https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
-->

<configuration>
  <system.webServer>
    <!-- Visit http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx for more information on WebSocket support -->
    <webSocket enabled = "false" />
    <handlers>
      <!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
      <add name = "iisnode" path = "app.js" verb = "*" modules = "iisnode"/>
    </handlers>
    <rewrite>
      <rules>
        <!-- Do not interfere with requests for node-inspector debugging -->
        <rule name = "NodeInspector" patternSyntax = "ECMAScript" stopProcessing = "true">
          <match url = "^app.js/debug[/]?" />
        </rule>

        <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
        <rule name = "StaticContent">
          <action type = "Rewrite" url = "public{REQUEST_URI}"/>
        </rule>

        <!-- All other URLs are mapped to the node.js site entry point -->
        <rule name = "DynamicContent">
          <conditions>
            <add input = "{REQUEST_FILENAME}" matchType = "IsFile" negate = "True"/>
          </conditions>
          <action type = "Rewrite" url = "app.js"/>
        </rule>
      </rules>
    </rewrite>

    <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment = "bin"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

    <!-- Make sure error responses are left untouched -->
    <httpErrors existingResponse = "PassThrough" />

    <!--
      You can control how Node is hosted within IIS using the following options:
        * watchedFiles: semi-colon separated list of files that will be watched for changes to restart the server
        * node_env: will be propagated to node as NODE_ENV environment variable
        * debuggingEnabled - controls whether the built-in debugger is enabled

      See https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config for a full list of options
    -->
    <iisnode watchedFiles = "web.config;*.js"/>
  </system.webServer>
</configuration>

Если вы поместите index.html в общую папку, созданную вами непосредственно в wwwroot/, вам необходимо добавить в свой код приведенный ниже код на основе этого статья.

app.use(express.static('public'))

Я тестировал это.


Обновить ответ:

Я также включаю опцию Web Sockets.

Спасибо за помощь! Но мне пока не удалось запустить приложение. У меня ошибка 403 -> i.imgur.com/X8H6afz.png - на site\wwwroot у меня есть файлы web.conf, app.js. Моя структура корневого каталога и общедоступная -> i.imgur.com/rf6OaC8.png. И напоследок мой app.js -> i.imgur.com/4ADqvZl.png

Fábio Zangirolami 02.01.2019 15:18

Я изменил конфигурацию приложения. Но теперь показана эта новая ошибка -> i.imgur.com/2P8Fx5P.png Ошибка 405 метод POST не разрешен. Я безнадежен = /

Fábio Zangirolami 02.01.2019 22:06

да! веб-сокеты уже включаются ... проблема сохраняется .. = / .... у меня возникла идея ... поместите весь проект в папку root. Но мне нужно настроить web.config для узла и для php в одной папке. Есть ли способ объединить это в один web.config?

Fábio Zangirolami 03.01.2019 01:52

@ FábioZangirolami Извините за задержку, статический файл в примере - это html, вы имеете в виду, что изменяете его как php?

Jay Gong 04.01.2019 01:52

у моего приложения нет пути к файлам php. Поскольку узел не является управляемым .phps .. У меня есть только маршрут к каталогам .... Я смог решить свою проблему, выполнив эту настройку на лазурном портале -> i.imgur.com/KB1YZJL.png

Fábio Zangirolami 04.01.2019 13:03

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