Изначально сервер Wiki.js работает по протоколу HTTP и прослушивает порт 3000. Wiki.js поддерживает настройку HTTPS собственными средствами, но для эксплуатации в рабочей среде рекомендуется использовать веб-сервер IIS в качестве обратного прокси. В такой конфигурации IIS принимает входящие HTTPS-соединения, выполняет SSL/TLS-шифрование и перенаправляет запросы локально работающему серверу Wiki.js. Такой подход упрощает управление сертификатами, обеспечивает гибкую настройку веб-сервера и считается предпочтительным для размещения Wiki.js на Windows Server.
В статье разберём, как настроить HTTPS-доступ к серверу Wiki.js, работающему на виртуальном сервере под управлением Windows Server. Инструкцию по установке Wiki.js на Windows Server можно найти здесь, а руководство по автоматическому запуску Wiki,js на Windows Server доступно по этой ссылке.
Как настроить HTTPS-доступ к серверу Wiki.js на Windows Server
Для настройки HTTPS-соединения, обеспечивающего TLS-шифрование трафика, необходимо получение и установка TLS-сертификата, который будет использоваться веб-сервером IIS для шифрования передаваемых данных. Устанавливаемый сертификат должен быть выпущен доверенным Центром сертификации, наиболее популярным из которых является Let’s Encrypt. Популярность данного ЦС отчасти обусловлена ещё и тем, что Let’s Encrypt выпускает бесплатные TLS-сертификаты.
Чтобы успешно выпустить сертификат, потребуется зарегистрированное доменное имя. С помощью DNS-записи типа A домен должен указывать на IP-адрес виртуального сервера, на котором установлен Wiki.js, чтобы Let’s Encrypt мог проверить право владения доменом. Для этого центру сертификации необходимо иметь возможность обратиться к виртуальному серверу по указанному доменному имени.
Привязку имени домена к IP-адресу виртуальной машины можно выполнить на сайте регистратора домена, на сайте хостинга, а также с использованием сторонних DNS-сервисов.
В нашем примере для настройки HTTPS-доступа к порталу Wiki.js будет использоваться доменное имя wiki.your-domain-name.ru, A-запись которого содержит IP-адрес виртуального сервера.
Запуск сайта Wiki.js на IIS
Для настройки подключения по протоколу HTTPS будет использоваться веб-сервер IIS, работающий как обратный прокси. Поэтому необходимо установить IIS на сервер, следуя инструкциям из статьи, посвящённой данному процессу.
После установки IIS, во-первых, создайте каталог для нового сайта, например, C:\inetpub\wiki. Во-вторых, создайте сайт, для чего откройте Server Manager и перейдите Tools → Internet Information Servises (IIS) Manager. В окне менеджера IIS раскройте ветку сервера в разделе Connections и, кликнув правой кнопкой мыши на строке Sites, выберите из меню Add Website.

Здесь в строку Site name введите название сайта. В строке Physical path при помощи кнопки Browse выберите ранее созданный каталог (в нашем примере это – C:\inetpub\wiki). Также в строке Type выберите http, в строке IP address – All Unassigned, в строке Port – 80. В строке Host name введите доменное имя сайта (в нашем примере это wiki.your-domain-name.ru). Для сохранения нажмите ОК.

После создания сайта необходимо выполнить запрос TLS-сертификата в Let’s Encrypt для его установки на сайт. Инструкция по установке бесплатного TLS-сертификата от Let’s Encrypt на сайт, работающий на IIS, также есть в нашем справочнике. При запросе сертификата используйте доменное имя вашего сайта. В нашем примере сертификат был установлен на сайт wiki.your-domain-name.ru.
Настройка обратного прокси на IIS
После создания сайта необходимо настроить его таким образом, чтобы он не обрабатывал запросы самостоятельно, а передавал их приложению Wiki.js, работающему на порту 3000. Для этого используются модули Application Request Routing (ARR) и URL Rewrite. Поэтому на данном шаге закройте окно диспетчера IIS и установите требуемые модули.
Для установки модуля Application Request Routing (ARR) воспользуйтесь данной ссылкой, а для установки модуля URL Rewrite – этой. Перейдя по каждой из ссылок, загрузите дистрибутив соответствующей версии. Ссылки на загрузку дистрибутива в обоих случаях размещены в самом низу страницы. После загрузки запустите установку каждого из модулей. По окончании инсталляции откройте командную строку и перезапустите IIS командой:
iisreset

Далее снова запустите менеджер IIS, кликните на название сервера в разделе Connections и откройте Application Request Routing Cache.

В разделе Actions кликните Server Proxy Settings.

В открывшемся окне активируйте опцию Enable proxy и нажмите Apply.

Затем кликните на сайт Wiki.js в разделе Connections и перейдите в .URL Rewrite

Здесь создайте новое правило при помощи Add Rule(s).

При добавлении правила выберите Blank rule.

В окне создания нового правила введите его название в строку Name. Затем в Request URL выберите Matches the Pattern, а в Using выберите Regular Expressions. В строку Pattern введите (.*). Такой шаблон будет означать, что создаваемое правило применяется ко всем запросам, поступающим на сайт. В строке Action Type выберите Rewrite, в строку Rewrite URL введите http://localhost:3000/{R:1}. В данном случае {R:1} – это часть URL, совпавшая с шаблоном (.*). То есть запрос https://wiki.your-domain-name.ru/login будет преобразован в http://localhost:3000/login, при этом адрес в браузере пользователя останется прежним – https://wiki.your-domain-name.ru/login. Также активируйте опции Append query string и Stop processing of subsequent rules. Для сохранения правила нажмите Apply.

Чтобы убедиться, что портал Wiki.js доступен по HTTPS, откройте браузер и перейдите на него, используя его доменное имя.

Сообщение вида Подключение защищено в навигационной строке браузера говорит о том, что доступ к сайту осуществляется с применением протокола HTTPS.
