nginx - drf_yasg swagger 中的 base_url 问题

标签 nginx django-rest-framework swagger openapi drf-yasg

我在 8000 端口中使用 Nginx 运行 Django。这里 Nginx 暴露在 8000 端口之外。但在 Swagger UI 中,base_url 设置为无端口。所以 Swagger 试图在没有端口的情况下访问端点,然后它给出一个响应为 TypeError: Failed to fetch

请引用下图了解 base_url 是如何设置的 enter image description here

请引用下图了解 Swagger 如何发送请求 enter image description here

当我使用 Postman 访问端点(带端口)时,它工作正常。仅当我尝试使用 Swagger 时才会出现此问题(因为发送的请求没有端口)。

在这里,我希望 Swagger 使用端口发送所有请求。请帮我解决这个问题。谢谢。

注意:

  1. 我正在使用 drf-yasg==1.17.1 包来生成 Swagger UI
  2. 其他要求是 Django==3.0.3djangorestframework==3.11.0

最佳答案

您还需要告诉 Nginx 转发服务器端口。当 swager 从请求 header 中获取基本 url 端口时(如果没有按照 mtshaikh 的建议进行硬编码)。

例如。像这样的东西应该在 Nginx 配置中

location / {
            proxy_set_header Host $host:$server_port;
    proxy_pass http://example.com:8000/;
}

关于nginx - drf_yasg swagger 中的 base_url 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64784245/

相关文章:

django - 如果在Django Rest框架中发生500错误,如何记录每个请求和响应?

python - Django休息框架: 'estado' is an invalid keyword argument for this function

swagger - 我们可以在 OpenAPI/Swagger 2.0 中设置全局 "consumes"和 "produces"吗?

linux - nginx 作为运行 apache 的反向代理

nginx - plesk下修改nginx代理的文档根目录

node.js - 带有 SSL 的 NodeJS Express 不适用于 Nginx 反向代理

java - 使用java.time.Instant来表示DateTime而不是OffsetDateTime

wordpress - Nginx 配置更改为使用 WordPress SEO 友好的 URL

django - 我可以覆盖 rest_framework 权限类中的 http 状态吗?

arrays - 在 swagger 中创建可重用的数组定义