我有一台服务器上运行了几个API.其中一个是用户-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会返回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.
我知道如果你使用url作为proxy_pass,你只需添加一个trailing /
,但我不知道在sock文件的情况下该怎么做.
如何摆脱现在包含在nginx中所有路由上的/ usersDB /后缀?
解决方法:
使用分隔:.例如:
proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock:/;
有关详情,请参见this document.