nginx 如何在OpenAPI路径前面添加段?

axkjgtzd  于 2023-02-15  发布在  Nginx
关注(0)|答案(1)|浏览(136)

我按照以下指南创建了一个REST端点:https://quarkus.io/guides/rest-json
在本地,我可以成功地在<host>/q/swagger-ui上使用swagger UI,它使用<host>/q/openapi作为输入。
但是,在生产中,我使用Nginx将请求转发到<host>/foobar,因此,最终的URL将更改为<host>/foobar/q/swagger-ui<host>/foobar/q/openapi
Quarkus Docker容器在端口49321上运行的nginx.conf代码段:

location /foobar/ {
              proxy_pass  http://172.17.0.1:49321/;
         }

application.properties中,我已经添加了以下行:

quarkus.swagger-ui.urls.direct=/foobar/q/openapi

通过这样做,Swagger-UI找到了OpenAPI规范,但是OpenAPI规范包含了错误的URL,因为它不知道/foobar/ URL段。
OpenAPI的外观:

---
paths:
  /some/url:
    get:
      tags:
      - blabla
      responses:
        "200":
          description: OK

需要的外观/foobar/优先于路径):

---
paths:
  /foobar/some/url:
    get:
      tags:
      - blabla
      responses:
        "200":
          description: OK

我已经在www.example.com上查看了可用的OpenAPI属性https://quarkus.io/guides/openapi-swaggerui#openapi,但它们似乎没有解决我的问题。

8e2ybdfx

8e2ybdfx1#

我通过在application.properties中设置以下内容解决了这个问题:

quarkus.http.root-path=/foobar

Nginx配置如下(nginx.conf):

location /foobar {
        proxy_pass  http://172.17.0.1:49321/foobar;
}

相关问题