温馨提示×

centos swagger为何无法访问

小樊
43
2026-10-03 06:52:34
栏目: 智能运维

在 CentOS 上部署 Swagger(如 Swagger UI / Springfox / Knife4j / OpenAPI)后“无法访问”,通常不是 Swagger 本身的问题,而是 网络、权限、配置或安全策略 导致。下面按最常见原因 → 排查方法 → 解决办法来说明。


一、最常见原因速查表

原因 典型表现
服务未监听正确端口 浏览器一直转圈 / 连接失败
防火墙未放行端口 本机能访问,外部不能
SELinux 限制 CentOS 特有,外部访问被拦
Swagger 被 Spring Security 拦截 返回 401 / 403
生产环境禁用 Swagger 访问 404
路径写错 404 Not Found
Nginx 反代配置错误 502 / 静态资源加载失败

二、逐步排查(重点)

1️⃣ 确认服务是否真的在跑

ps -ef | grep java
netstat -tunlp | grep 8080
# 或
ss -tunlp | grep 8080

✅ 本机测试:

curl http://127.0.0.1:8080/swagger-ui.html
  • 能访问 → 问题在 网络 / 防火墙
  • 不能访问 → 问题在 应用 / 配置

2️⃣ 防火墙(CentOS 最常见)

查看防火墙状态

systemctl status firewalld

放行端口(如 8080)

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

✅ 验证:

firewall-cmd --list-ports

3️⃣ SELinux(CentOS 特有坑)

查看状态

getenforce

如果是 Enforcing:

setenforce 0   # 临时关闭

✅ 永久关闭(不推荐生产):

vi /etc/selinux/config
SELINUX=disabled

或放行 HTTP 端口:

semanage port -a -t http_port_t -p tcp 8080

4️⃣ Spring Boot + Swagger 被 Security 拦截

如果你用了 Spring Security,必须放行:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
      .authorizeRequests()
      .antMatchers(
          "/swagger-ui.html",
          "/swagger-resources/**",
          "/v2/api-docs",
          "/v3/api-docs",
          "/webjars/**"
      ).permitAll()
      .anyRequest().authenticated();
}

5️⃣ 生产环境禁用 Swagger(很常见)

spring:
  profiles: prod
@Profile("!prod")
@EnableSwagger2

或:

swagger:
  enabled: false

✅ 解决:切换环境或开启配置


6️⃣ Swagger 路径错误(版本不同)

版本 访问地址
Swagger 2 /swagger-ui.html
SpringDoc /swagger-ui/index.html
Knife4j /doc.html

7️⃣ Nginx 反代问题(如果你用了)

示例(正确):

location / {
    proxy_pass http://127.0.0.1:8080;
}

Swagger 静态资源需同源。


三、快速定位技巧(关键)

# 看日志
journalctl -u your-service
# 或
tail -f logs/*.log

浏览器按 F12 → Network,看是:

  • 404 → 路径/禁用
  • 401/403 → 安全拦截
  • 连接失败 → 防火墙/端口

四、如果你愿意,我可以直接帮你定位

你可以直接把以下信息发我:

  1. CentOS 版本
  2. Swagger 类型(Swagger2 / SpringDoc / Knife4j)
  3. 访问地址
  4. 报错信息(浏览器 / 日志)
  5. 是否使用 Nginx / Docker

我可以 一步一步给你具体命令。

0 踩