Настройка IIS для работы с NodeJS
Установка NodeSJ
Настройка NodeJS проходит в обычном режиме:- Скачиваем дистрибутив: https://nodejs.org/uk/
- Устанавливаем NodeJS.
Установка URL Rewrite
- Жмем «Пуск» и запускаем утилиту Windows Web Platform Installer.
- В строке поиска вводим “url rewrite”. Будет найдено расширение URL Rewrite. Жмем кнопку «Установить».
- Расширение появляется в списке установленных:
Установка IISNode
- Скачиваем файл iisnode-full-v0.2.21-x64.msi с IISNode для 64 битной версии по этой ссылке: https://github.com/tjanczuk/iisnode.
- Устанавливаем расширение в папку по умолчанию. C:\Program Files\iisnode\
- Инсталляция содержит файл setupsamples.bat, который создает тестовый сайт с примерами конфигураций в пределах сайта по умолчанию. Папка WWW этого сайта лежит в C:\Program Files\iisnode\www\ Запускать или не запускать BAT файл – на ваше усмотрение. Если что – можно просто посмотреть содержимое папок и файлы конфигурации.
- Обязательно! Выставляем права на запись в папку сайта в котором будет работать iisnode для пользователя IIS_IUSRS
Установка сертификатов HTTPS
- Генерируем заявку на создание сертификата в разделе IIS Manager Server Certificates.
- Получив сгенерированный запрос на генерацию сертификата отправляем нужным людям и в ответ получаем готовый сертификат безопасности.
- Прописываем его на сервере. Переходим в раздел IIS Manager/Server Certificates/Complete Certificate Request.
Настройка IIS под использование NodeJS, HTTPS
Создаем сайт. Например, mycoolapi.com.
- Запускаем IIS Manager
- На разделе Sites кликаем правой кнопкой и выбираем Add Website.
- Прописываем папку, где будет лежать содержимое сайта. По умолчанию исходная папка – c:\inetpub. Создаем в ней папку mycoolapi.com. Т.о. наш сайт и все его содержимое будет дить в папке c:\inetpub\ mycoolapi.com.
Привязываем порт HTTPS к вашему сайту:
- Разворачиваем список Sites.
- Выбираем наш сайт mycoolapi.com
- В правом меню выбираем bindings и прописываем https в настройках сайта имя нашего сайта и выбираем подгруженный сертификат:
Создаем правило автоматической переадресации с HTTP на HTTPS.
Можно настраивать правила переадресации через IIS Manager, но проще будет открыть и отредактировать файл web.config, лежащий в корневой директории вашего сайта. Если такого файла нет, создаем его. Это правило перенаправит любой вход на ваш сайт через HTTP на HTTPS.
См. секцию: Правила URL Rewrite / Перенаправление на HTTPSПеренаправляем все переходы на ваш сайт на конкретный JS файл.
См. Секцию: Перенаправление на HTTPS / Перенаправление любого URL на файл api.js и Обработчик iisnodeКонфигурируем IIS для работы с IISNode.
См. секцию Расширенная конфигурация iisnode. Значение ключей конфигурации смотрим в мануале к iisnode.Файл конфигурации IIS WEB.CONFIG:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <!-- Обработчик iisnode --> <handlers> <add name="iisnode" path="api.js" verb="*" modules="iisnode" /> </handlers> <!-- Правила URL Rewrite --> <rewrite> <rules> <!-- Перенаправление на HTTPS --> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> </conditions> <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" /> </rule> <!-- Перенаправление любого URL на файл api.js --> <rule name="sendToNode"> <match url="/*" /> <action type="Rewrite" url="api.js" /> </rule> </rules> </rewrite> <!-- Расширенная конфигурация iisnode Если nodeProcessCountPerApplication = "0", создает по экземпляру NodeJs на каждый процессор --> <iisnode node_env="%node_env%" nodeProcessCountPerApplication="1" maxConcurrentRequestsPerProcess="1024" maxNamedPipeConnectionRetry="100" namedPipeConnectionRetryDelay="250" maxNamedPipeConnectionPoolSize="512" maxNamedPipePooledConnectionAge="30000" asyncCompletionThreadCount="0" initialRequestBufferSize="4096" maxRequestBufferSize="65536" watchedFiles="*.js;iisnode.yml" uncFileChangesPollingInterval="5000" gracefulShutdownTimeout="60000" loggingEnabled="true" logDirectory="iisnode" debuggingEnabled="true" debugHeaderEnabled="false" debuggerPortRange="5058-6058" debuggerPathSegment="debug" maxLogFileSizeInKB="128" maxTotalLogFileSizeInKB="1024" maxLogFiles="20" devErrorsEnabled="true" flushResponse="false" enableXFF="false" promoteServerVars="" configOverrides="" /> </system.webServer> </configuration>
Ошибки
В случае ошибки HTTP Error 500.19 - Internal Server Error:
Заходим в Feature Delegation и устанавливаем Handler Mappings в Read/Write,
перезапускаем сервер.
Ошибка записи логов
Во первых, следим за настройкой logDirectory. Она указывает куда модуль будет сбрасывать
сообщения о ошибках. Эту папку желательно вырести из каталога приложения и дать права
на запись для пользователя IIS_IUSRS, под которым работает приложение сервера. Для этого
заходим в закладку Security свойств папки, добавляем этого пользователя, и даем ему права
на запись.
Комментарии
Отправить комментарий