Alp*_*urk 6 nginx swagger-ui fastapi
希望您能帮助我,这是我遇到的问题:
我的前端和后端服务器都在同一个 AWS EC2 实例上运行。因此,我创建了一个如下的 NGINX 配置:
server {
server_name NAME;
listen 80 default_server;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
}
location /api/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,对“http://public_ip/api/”的任何请求都会路由到 FastAPI 后端服务器,而对另一个端点的所有其他请求都会路由到前端 SPA。
这在大多数情况下效果很好。但是,如果我尝试访问 FastAPI “/api/docs”或“/api/redoc”路由,则会出现问题。例如,当我调用“/api/docs”端点时,有一个对“http://public_ip/openapi.json”地址的请求。显然这不是以“/api”开头的端点。因此 NGINX 会阻止它并提出错误的请求。
https://fastapi.tiangolo.com/advanced/behind-a-proxy/#about-proxies-with-a-stripped-path-prefix
我找到了本指南,但似乎这与我的问题根本无关。至少我是这么理解的。
任何帮助表示赞赏。提前致谢。
将“openapi_url”参数传递给 FastAPI() 似乎是一个不错的解决方案。传递了openapi_url= '/api/openapi.json'并且它对于文档和重做都是固定的。任何其他/更好的解决方案来处理可能发生的所有重定向都是值得赞赏的。
api = FastAPI(title="API_NAME",
description="API_DESC",
version="0.2.0",
docs_url='/api/docs',
redoc_url='/api/redoc',
openapi_url='/api/openapi.json')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11177 次 |
| 最近记录: |