背景
我有一个远程服务器,使用 Plumber 在其上运行 R API 服务。从某种意义上说,它是完全可操作的,我可以从外部调用我的服务。
我正在使用 Ubuntu/Nginx 反向代理设置。Plumber 服务正在侦听端口 1163。我随后实现了以下 Nginx 重新路由,以便 API 侦听https://server.net/API/:
location /API/ {
proxy_pass http://localhost:1163/;
proxy_redirect http://localhost:1163/ $scheme://$host/;
}
这工作正常。现在,默认情况下,Swagger UI 会监听
http://127.0.0.1:1163/__swagger__/
由于上面的配置,这意味着我可以成功访问 Swagger UI
https://server.net/API/__swagger__/
问题
我想配置 Nginx 以便 Swagger UI 监听https://server.net/API/documentation/。我尝试了以下嵌套的 Nginx 配置:
location /API/ {
proxy_pass http://localhost:1163/;
proxy_redirect http://localhost:1163/ $scheme://$host/;
location /API/documentation/ {
proxy_pass http://localhost:1163/__swagger__/;
proxy_redirect http://localhost:1163/__swagger__/ $scheme://$host/;
}
}
现在,在我的浏览器中输入所需的 URL https://server.net/API/documentation/时,我检索了 Swagger 界面,但是它返回以下错误代码:
显然,在 Nginx 重定向期间已经解析了不正确的 swagger URL。考虑到网址应该说明这一点很清楚
https://server.net/API/swagger.json?schemes=https&host=server.net&path=/API/
代替
http://petstore.swagger.io/v2/swagger.json
如何确保在 Nginx 重定向期间将正确的 URL 解析到 Swagger UI?一切顺利,J。