SpringDoc/Swagger 在 nginx 代理后面
SpringDoc/Swagger behind an nginx proxy
我们是 运行 nginx
代理背后的服务,因此:
http://service-post:8080/swagger-ui.html
被路由到 public 地址 https://host.com/services/post/swagger-ui.html
或者换一种方式定义:
当 nginx 在 https://host.com/services/post/swagger-ui.html
上收到请求时,它会去除 /services/post/
前缀并将请求传递给 /swagger-ui.html
路径上的 post
服务。
在设置任何东西之前(使用默认的 SpringDoc 配置)我可以在 http://service-post:8080/swagger-ui.html
.
上正确地看到 swagger 文档
要在 host.com 上设置 public 地址的路径,我正在使用:
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
return 404
service-post:8080/*
和 https://host.com/services/post/*
唯一似乎有效的是 https://host.com/services/post/swagger-ui/index.html,它显示了 petstore 文档。
我们没有使用 Spring Boot,只是 Spring MVC 5.3.1.
那么我该如何设置以保持对原始路径的处理(例如 /api-docs
),但在前缀路径(/services/post/api-docs
)上执行查找?
全部记录在这里:
如果您没有使用 spring-boot,您可以添加 ForwardedHeaderFilter bean:
最后我完全忽略了默认重定向:
swagger-ui.html
-> `swagger-ui/index.html?url=/v3/api-docs
并实现了我自己的一个:
docs
-> swagger-ui/index.html?url=MY_PREFIX/v3/api-docs
这样我不需要更改任何东西,一切都使用默认设置。
我们是 运行 nginx
代理背后的服务,因此:
http://service-post:8080/swagger-ui.html
被路由到 public 地址 https://host.com/services/post/swagger-ui.html
或者换一种方式定义:
当 nginx 在 https://host.com/services/post/swagger-ui.html
上收到请求时,它会去除 /services/post/
前缀并将请求传递给 /swagger-ui.html
路径上的 post
服务。
在设置任何东西之前(使用默认的 SpringDoc 配置)我可以在 http://service-post:8080/swagger-ui.html
.
要在 host.com 上设置 public 地址的路径,我正在使用:
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
return 404
service-post:8080/*
和 https://host.com/services/post/*
唯一似乎有效的是 https://host.com/services/post/swagger-ui/index.html,它显示了 petstore 文档。
我们没有使用 Spring Boot,只是 Spring MVC 5.3.1.
那么我该如何设置以保持对原始路径的处理(例如 /api-docs
),但在前缀路径(/services/post/api-docs
)上执行查找?
全部记录在这里:
如果您没有使用 spring-boot,您可以添加 ForwardedHeaderFilter bean:
最后我完全忽略了默认重定向:
swagger-ui.html
-> `swagger-ui/index.html?url=/v3/api-docs
并实现了我自己的一个:
docs
->swagger-ui/index.html?url=MY_PREFIX/v3/api-docs
这样我不需要更改任何东西,一切都使用默认设置。