我有个 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-03 17:51:28 +08:00
应该是在 swagger 配置里改,Docket.host()
|
2
JasonLaw OP @litchinn #1 使用 SWAGGER_2 时,设置 springfox.documentation.swagger.v2.host 为 a.com/appServer 就行了,但是 OAS_30 不行。
|
3
neekeV2 2021-11-03 18:08:53 +08:00
同样问题,我是这么处理的。
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 |