在 Linux 环境下优化 Swagger(OpenAPI),通常可以从性能、文档体积、安全性、可维护性和部署方式几个维度入手。下面按场景给你一套实用优化方案。
Swagger 文档过大是导致慢、卡、加载失败的主因。
Spring Boot 示例
@ApiOperation(value = "内部接口", hidden = true)
或使用分组:
springfox:
documentation:
swagger:
use-model-v3: true
避免一次性加载全部接口。
@Bean
public Docket userApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("user")
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.user"))
.build();
}
不要在运行时动态生成
✅ 方案:
swagger-codegen / openapi-generatorswagger.jsonopenapi-generator generate \
-i swagger.yaml \
-g html2 \
-o /var/www/swagger
Nginx 配置:
location /swagger/ {
root /var/www;
index index.html;
}
✅ 优点:
gzip on;
gzip_types application/json;
spring:
profiles: prod
swagger:
enabled: false
或 Nginx 限制 IP:
location /swagger/ {
allow 192.168.1.0/24;
deny all;
}
location /swagger/ {
auth_basic "Swagger";
auth_basic_user_file /etc/nginx/swagger.passwd;
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist/swagger-ui.css">
const ui = SwaggerUIBundle({
url: "/swagger.json",
dom_id: '#swagger-ui',
deepLinking: false,
tryItOutEnabled: false
});
ulimit -n 65535
sysctl -w net.core.somaxconn=65535
[Java/Go 服务]
↓
生成 swagger.json(CI)
↓
Nginx + Swagger UI(静态)
↓
内网访问 / 鉴权
告诉我:
我可以给你针对性配置。