我有一台服务器,上面运行着多个 API。其中之一是 users-DB 以下归结为 gunicorn 就好了:

location /usersDB/ {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}

除非我尝试访问 usersDB API 的/helloWorld 路由,并查看 gunicorn.err 的日志,我看到:
GET /usersDB/helloWorld

我希望看到:
GET /helloWorld

当然,gunicorn 返回 404,这就是我在浏览器中看到的。我试过重写规则:
location /usersDB/ {
    rewrite /usersDB/(.*) /$1 last;
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}

但上述结果导致请求进入 /var/www/htmlhelloWorld 而不是 app.sock。

我知道,如果您为 proxy_pass 使用 url,您只需添加 trailing / ,但我不确定在 sock 文件的情况下该怎么做。

如何摆脱现在包含在 nginx 中所有路由中的 /usersDB/ 后缀?

最佳答案

使用单独的 : 。例如:

proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock:/;

有关详细信息,请参阅 this document

10-07 15:21