Назад | Перейти на главную страницу

Настройка обратного прокси-сервера IIS для сохранения заголовков узлов

У меня есть сервер IIS, на котором размещено несколько сайтов и API. Эти сайты включают экземпляры Confluence и Jira. Эти продукты фактически используют свои собственные веб-серверы, поэтому модули маршрутизации запросов приложений и переопределения URL-адресов используются для реверсирования входящих запросов прокси на documents.example.com' and 'jira.example.com' toлокальный: 8080andlocalhost: 8090` - где запущены экземпляры confluence и jira.

Теперь я пытаюсь настроить обратный прокси-сервер для небольшого api (minio) сервера простого хранилища (s3), который размещен на localhost: 9000, но протокол s3 требует, чтобы заголовок хоста был частью его кодов аутентификации сообщений.

Однако, когда маршрутизация запросов приложений перенаправляет запрос в соответствии с правилом перезаписи URL-адреса, она также перезаписывает заголовок узла, чтобы отразить новый заголовок назначения.

Это можно отключить, установив system.webServer.proxy:preserveHostHeaders но только в ApplicationHost.config, поскольку ARR запускает сервер, а не уровень сайта.

Итак, теперь у меня есть загадка:

Если я установлю этот параметр, тогда REST API, которые используют заголовок хоста в своем MAC-адресе, могут работать, но Confluence и Jira в качестве поддерживаемой конфигурации обратного прокси-сервера ожидают перезаписанные заголовки хоста.

Для справки, этот набор позволяет сохранять заголовки хоста.

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost

Я борюсь с той же проблемой. У меня есть решение, которое мне не нравится (и, держу пари, оно вам тоже не понравится), но оно работает.

Если вы включите preserveHostHeaders, вы можете добавить правила перезаписи исходящих URL-адресов для переназначения всех случаев, когда вы делать хотите заменить заголовки хоста.