Использование IIS с URL Rewrite в качестве обратного прокси
Если вы хотите, чтобы Grafana была подпутём/подпапкой веб-сайта в IIS, для этого можно использовать модули Application Request Routing (ARR) и URL Rewrite для IIS.
Пример:
- Родительский сайт: http://yourdomain.com:8080
- Grafana: http://localhost:3000
Grafana как подпуть: http://yourdomain.com:8080/grafana
Другие примеры:
- Если приложение обслуживается только на локальном сервере, родительский сайт также может выглядеть как http://localhost:8080.
- Если ваш домен обслуживается по https на порту 443, и поэтому порт обычно не указывается в адресе вашего сайта, тогда необходимость указывать порт для родительского сайта на этапах настройки ниже устраняется.
Настройка
Установите модуль URL Rewrite для IIS.
- Загрузите и установите модуль URL Rewrite для IIS: https://www.iis.net/downloads/microsoft/url-rewrite
Вам также понадобится модуль Application Request Routing (ARR) для IIS для переадресации прокси.
- Загрузите и установите модуль ARR для IIS: https://www.iis.net/downloads/microsoft/application-request-routing
Конфигурация Grafana
Конфигурацию Grafana можно задать, создав файл с именем custom.ini или отредактировав существующий файл с таким именем в подкаталоге conf вашей установки Grafana. Подробнее см. в
инструкциях по установке.
Используя пример выше, если подпуть — grafana (вы можете задать его любым, который требуется), а родительский сайт — yourdomain.com:8080, тогда вы добавите это в файл конфигурации custom.ini:
[server]
domain = yourdomain.com:8080
root_url = %(protocol)s://%(domain)s/grafana/
Перезапустите сервер Grafana после изменения файла конфигурации.
Настроенный адрес для обслуживания Grafana: http://yourdomain.com:8080/grafana
Если у вас уже есть подпуть на вашем домене, настройте его следующим образом:
- Адрес вашего родительского сайта: http://yourdomain.com/existingsubpath
[server]
domain = yourdomain.com/existingsubpath
root_url = %(protocol)s://%(domain)s/grafana/
Перезапустите сервер Grafana после изменения файла конфигурации.
Настроенный адрес для обслуживания Grafana: http://yourdomain.com/existingsubpath/grafana
Конфигурация IIS
Шаг 1: прямой прокси
- Откройте диспетчер IIS и нажмите на сервер.
- В консоли администрирования сервера дважды щёлкните на параметре Application Request Routing.
- Нажмите действие
Server Proxy Settingsв правой области. - Установите флажок
Enable proxy, чтобы он был включён. - Нажмите
Applyи перейдите к настройке URL Rewriting.
Примечание: Если вы не включите прямой прокси, вы, скорее всего, получите 404 Not Found, если примените только правило URL Rewrite.
Шаг 2: перезапись URL
- В диспетчере IIS нажмите на веб-сайт, под которым будет работать grafana. Например, выберите веб-сайт, привязанный к домену http://yourdomain.com.
- В консоли администрирования этого веб-сайта дважды щёлкните на параметре URL Rewrite:
- Нажмите действие
Add Rule(s).... - Выберите шаблон Blank Rule для входящего правила.
- Создайте входящее правило для веб-сайта со следующими параметрами:
- шаблон:
grafana(/)?(.*)(если вы настроили собственный подпуть, используйте его вместоgrafana) - установите флажок
Ignore case - URL перезаписи:
http://localhost:3000/{R:2} - установите флажок
Append query string - установите флажок
Stop processing of subsequent rules
- Если ваша версия Grafana выше 8.3.5, вам также нужно настроить обратный прокси для сохранения заголовков хоста.
- Это можно сделать, настроив файл конфигурации IIS, выполнив в командной строке:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost - Дополнительная информация здесь: https://github.com/grafana/grafana/issues/45261
Наконец, перейдите по адресу http://yourdomain.com:8080/grafana, и вы должны попасть на страницу входа Grafana.
Устранение неполадок
Ошибка 404
Если при переходе по URL Grafana (http://yourdomain.com:8080/grafana) возвращается ошибка HTTP Error 404.0 - Not Found, то либо:
- Шаблон входящего правила неверен. Отредактируйте правило, нажмите кнопку
Test pattern..., проверьте часть URL послеhttp://yourdomain.com:8080/и убедитесь, что она совпадает. Дляgrafana/loginтест должен вернуть 3 группы захвата: {R:0}:grafana{R:1}:/и {R:2}:login. - Настройка
root_urlв файле конфигурации Grafana не соответствует родительскому URL с подпутём.
Веб-сайт Grafana показывает только текст без изображений и CSS
-
Настройка
root_urlв файле конфигурации Grafana не соответствует родительскому URL с подпутём. Это может произойти, еслиroot_urlпо ошибке закомментирован (;используется для комментирования строки в файлах .ini):; root_url = %(protocol)s://%(domain)s/grafana/ -
или если подпуть в настройке
root_urlне соответствует подпутю, используемому в шаблоне входящего правила в IIS:root_url = %(protocol)s://%(domain)s/grafana/шаблон во входящем правиле:
wrongsubpath(/)?(.*) -
или если URL перезаписи во входящем правиле неверен.
URL перезаписи не должен включать подпуть.
URL перезаписи должен содержать группу захвата из сопоставления шаблона, которая возвращает часть URL после подпути. Используемый выше шаблон возвращает три группы захвата, и третья {R:2} возвращает часть URL после
http://yourdomain.com:8080/grafana/.
Вы видите ошибку «Error updating options: origin not allowed»
- Убедитесь, что вы выполнили шаг 6 выше, чтобы настроить IIS для сохранения заголовков хоста, отредактировав конфигурацию IIS, выполнив в командной строке:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost