将nginx位置重定向/重写为.sock文件,不带前缀

时间:2018-02-13 03:44:54

标签: sockets nginx reverse-proxy gunicorn

我有一台服务器上运行了多个API。其中一个是users-DB以下内容可以归结为枪支:

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会返回404s,这就是我在浏览器中看到的内容。我尝试过重写规则:

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。

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

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

1 个答案:

答案 0 :(得分:5)

使用分隔:。例如:

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

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