SpringDoc / Swagger за прокси-сервером nginx

Мы запускаем службу за nginx прокси, чтобы:

http://service-post:8080/swagger-ui.html направляется на общий адрес https://host.com/services/post/swagger-ui.html

Или определить по-другому:

Когда nginx получает запрос на https://host.com/services/post/swagger-ui.html, он удаляет префикс /services/post/ и передает запрос службе post по пути /swagger-ui.html.

Перед настройкой чего-либо (с конфигурацией SpringDoc по умолчанию) я могу правильно увидеть документацию swagger на http://service-post:8080/swagger-ui.html.

Чтобы установить пути для публичного адреса на host.com, я использую:

springdoc.api-docs.path:        /services/post/api-docs
springdoc.swagger-ui.path:      /services/post/swagger-ui.html
springdoc.swagger-ui.configUrl: /services/post/v3/api-docs/swagger-config

Однако кажется, что это полностью тормозит:

/swagger-ui.html, /api-docs и /v3/api-docs/swagger-config возвращают 404 как для service-post:8080/*, так и для https://host.com/services/post/*

Единственное, что кажется работающим, - это https://host.com/services/post/swagger-ui/index.html, в котором показана документация по петростору.

Мы не используем Spring Boot, только Spring MVC версии 5.3.1.

Итак, как мне настроить сохранение обработки исходных путей (например, /api-docs), но выполнение поиска по пути с префиксом (/services/post/api-docs)?


person Vojtěch    schedule 01.12.2020    source источник
comment
Почему вы используете springdoc.swagger-ui.configUrl?   -  person    schedule 02.12.2020
comment
Я, конечно, пробовал не пользоваться, но это не помогает.   -  person Vojtěch    schedule 02.12.2020


Ответы (2)


В конце концов, я полностью игнорирую перенаправление по умолчанию:

  • swagger-ui.html - ›` swagger-ui / index.html? Url = / v3 / api-docs

И реализовал свой:

  • docs -> swagger-ui/index.html?url=MY_PREFIX/v3/api-docs

Таким образом, мне не нужно ничего менять, и все работает с настройками по умолчанию.

person Vojtěch    schedule 02.12.2020
comment
В springdoc-openapi (и, возможно, swagger) вы можете изменить URL-адрес в application.properties с помощью свойства springdoc.swagger-ui.url, чтобы доступ к swagger-ui.html перенаправлял вас на правильный URL-адрес. - person Elbbard; 10.03.2021

Все это задокументировано здесь:

Если вы не используете spring -boot, вы можете добавить bean-компонент ForwardedHeaderFilter:

person brianbro    schedule 02.12.2020
comment
Я, конечно, прочитал всю эту документацию и попробовал это, однако в моем случае это не сработало. - person Vojtěch; 02.12.2020
comment
К счастью, исходный код открыт, и в этом случае у вас есть возможность настроить его. Но это не кажется определенно правильным выбором с точки зрения обслуживания и масштабируемости. - person brianbro; 02.12.2020