I'm moving from springfox to springdoc and I'm finding the following problem.
In the doc, you specify that the deploy urls are as follows:
http://server:port/context-path/swagger-ui.html
http://server:port/context-path/v3/api-docs
In my case, the Spring Project is behind a reverse proxy, and I don't have access to the base url of the server, so my urls look something like:
http://server:port/custom-path/context-path/swagger-ui.html
http://server:port/custom-path/context-path/v3/api-docs
The problem is when I attempt to enter to the swagger-ui.html I see this error:

The point is, the web page is attempting to reach http://server:port/context-path/v3/api-docs instead of http://server:port/custom-path/context-path/v3/api-docs
As a last thing to mention, if I try to load http://server:port/custom-path/context-path/swagger-ui/index.html?url=/custom-path/context-path/v3/api-docs&validatorUrl= the page loads as expected
Is there a way to customize the path it loads by default? or maybe make it able to know the path where you are?
Hi,
In general, behind 脿 reverse proxy, your application that ships the springbok-openapi should have the following line in the application.properties:
server.use-forward-headers=true
This will make sure that, the redirects of the swagger-ui, will not go to the server behind the proxy.
Can you please test it, and give us your feedback?
I've tried your suggested property but sadly it seems that only that is not enough. I'll try to check what else is missing if you think it should work without needing to change how the path is built
Hi,
First of all, you need to make sure the following header is set in your reverse proxy configuration: X-Forwarded-Prefix
For example, using apache 2, configuration
RequestHeader set X-Forwarded-Prefix "/custom-path"
Then, in your spring-boot application make sure your application handles this header: X-Forwarded-For. There are two ways to achieve this:
server.forward-headers-strategy=framework
@Bean
ForwardedHeaderFilter forwardedHeaderFilter() {
return new ForwardedHeaderFilter();
}
Please don't forget to give a feedback about which option resolved your issue.
Hi, I've been able to fix this issue by adding the @Bean and adding the headers to my nginx proxy.
Thanks
Great. Thank you for your feedback.
Most helpful comment
Hi,
First of all, you need to make sure the following header is set in your reverse proxy configuration: X-Forwarded-Prefix
For example, using apache 2, configuration
Then, in your spring-boot application make sure your application handles this header: X-Forwarded-For. There are two ways to achieve this:
Please don't forget to give a feedback about which option resolved your issue.