springboot swagger ui使用 nginx 部署后无法使用问题

3,101 阅读1分钟

前因

springboot在本地运行的时候,swagger-ui可以正常请求,当部署在测试服务器上之后,经过nginx转发当前项目,发现swagger-ui的baseurl变成为nginx 配置的upstream的name,影响了调试。

server {
    listen       443;
    server_name  domain.com;
    upstream api{
        127.0.0.1:8081;
    }
    # 接口服务
    location /api {
        proxy_pass http://api;
    }
}

当在swagger-ui针对某个接口Try it out出现

发现baseurl没有使用domain.com取发起请求,而是使用nginx的upstream的name

方法一 修改nginx的配置

增加host配置,针对上面的配置调整为

server {
    listen       443;
    server_name  domain.com;
    upstream api{
        127.0.0.1:8081;
    }
    # 接口服务
    location /api {
        proxy_pass http://api;
        proxy_set_header Host $host; # 指定host
    }
}

方法二 在配置文件显式添加属性

在application.properties配置文件中指定

springfox.documentation.swagger.v2.host=domain.com

或者 在application.yml配置文件中指定

springfox:
  documentation:
    swagger:
      v2:
        host: domain.com