Настройка 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 свойств папки, добавляем этого пользователя, и даем ему права
на запись.





Комментарии
Отправить комментарий