asp.net core swagger (Swashbuckle ) 设置nginx proxy后,无法访问的问题

通过代理转发后,webapi的swagger无法访问,本质原因是代理后url路径发生变化导致/swagger无法定位到json。

#https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle

c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");

相关issue:

https://github.com/microsoft/service-fabric-issues/issues/327
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/662
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/427
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/380

issue评论中,一般推荐通过PreSerializeFilters设置BasePath的方案,但在5.x版本中BasePath被删除了。最终选择使用设置相对路径的方案:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/380#issuecomment-374711180

代码请见 https://github.com/wswind/swagger-under-nginx/blob/f5f6f89cb7f109059f5b4c9524a7ccbb401bc59a/Startup.cs#L56

app.UseSwaggerUI(c =>
	{
		c.SwaggerEndpoint("v1/swagger.json", "My API V1");
	});
上一篇:the Agiles Scrum Meeting 10


下一篇:kubernetes系列文章第一篇-k8s基本介绍