将nginx位置重定向/重写为.sock文件(无前缀)

dim*_*oly 3 sockets reverse-proxy nginx gunicorn

我有一台服务器,上面运行着几个API。其中之一是users-DB以下内容可归结为“ gunicorn”:

location /usersDB/ {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)

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

GET /usersDB/helloWorld
Run Code Online (Sandbox Code Playgroud)

我希望看到:

GET /helloWorld
Run Code Online (Sandbox Code Playgroud)

当然,gunicorn返回404,这就是我在浏览器中看到的。我试过重写规则:

location /usersDB/ {
    rewrite /usersDB/(.*) /$1 last;
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)

但是上面的结果导致请求进入了/var/www/htmlhelloWorld替代app.sock的方式。

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

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

Ric*_*ith 6

使用分隔符:。例如:

proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock:/;
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见此文档