我在 8000 端口中使用 Nginx 运行 Django。这里 Nginx 暴露在 8000 端口之外。但在 Swagger UI 中,base_url 设置为无端口。所以 Swagger 试图在没有端口的情况下访问端点,然后它给出一个响应为 TypeError: Failed to fetch。
当我使用 Postman 访问端点(带端口)时,它工作正常。仅当我尝试使用 Swagger 时才会出现此问题(因为发送的请求没有端口)。
在这里,我希望 Swagger 使用端口发送所有请求。请帮我解决这个问题。谢谢。
注意:
- 我正在使用 drf-yasg==1.17.1 包来生成 Swagger UI
- 其他要求是 Django==3.0.3 和 djangorestframework==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/