
我有个 web 应用,使用 Nginx 进行代理,Nginx 的配置如下(已简化):
http { upstream appServerBackend { server localhost:8081; } server { listen 443 ssl http2; server_name a.com; location /appServer/ { proxy_pass http://appServerBackend/; } } } web 应用使用 Swagger 产生文档,以下是 Swagger UI 展示的 Servers ,其值为http://appServerBackend:80,导致在 Swagger 执行请求时会请求http://appServerBackend:80,而不是期望的https://a.com/appServer。怎样操作才能实现“在 Swagger 执行请求时请求https://a.com/appServer”呢?

我尝试过修改 Nginx 的配置,在 proxy_pass 下面加上如下代码块。
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; Servers 变成了https://a.com:443,还不是我期望的https://a.com/appServer,我应该怎么操作才能让 Servers 变成https://a.com/appServer呢?
1 litchinn 2021 年 11 月 3 日 应该是在 swagger 配置里改,Docket.host() |
2 JasonLaw OP @litchinn #1 使用 SWAGGER_2 时,设置 springfox.documentation.swagger.v2.host 为 a.com/appServer 就行了,但是 OAS_30 不行。 |
3 neekeV2 2021 年 11 月 3 日 同样问题,我是这么处理的。 nginx: server { listen 80; server_tokens off; charset utf-8; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 5; gzip_types text/plain application/Javascript application/x-Javascriptapplication/xml text/Javascript application/json text/css; location /api/ { proxy_pass http://127.0.0.1:10000/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } springboot: server: port: 10000 servlet: context-path: /api |