Linux下Swagger常见问题与解决方案
一 快速排查路径
ss -tlnp | grep 8080 或 netstat -tlnp | grep 8080。sudo ufw allow 8080;如使用 firewalld,执行 sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload。二 高频问题与处理
springfox.documentation.swagger-ui.base-path=/api-docs,并在 Docket 上做相应 pathMapping。mvn dependency:tree 或 Maven Helper 检查依赖树,解决 Guava 等多版本冲突。proxy_pass http://127.0.0.1:8080; proxy_set_header X-Forwarded-Prefix /api;,并确保 UI 的基础路径与后端前缀一致。三 Spring Boot 集成配置示例
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/api-docs");
}
}
springfox.documentation.swagger-ui.base-path=/api-docs
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
四 Nginx 代理与路径前缀
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
springfox.documentation.swagger-ui.base-path 调整;springdoc 默认自适应。location /api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Forwarded-Prefix /api;
}
五 替代部署与兼容性方案
docker run -d -p 8080:8080 swaggerapi/swagger-ui:latest
docker run -d -p 8081:8080 swaggerapi/swagger-editor:latest
访问地址分别为:http://localhost:8080(UI)、http://localhost:8081(Editor)。index.html 中的 URL 指向你的 API JSON(如 /v2/api-docs 或 /v3/api-docs),用 Nginx/Apache 托管静态资源。