我有一系列本地服务都在不同的端口上运行。我想通过 nginx 反向代理公开这些服务。路由模式应遵循以下模式:
0.0.0.0/app -> locahost:3000
0.0.0.0/api -> locahost:3001
0.0.0.0/db -> locahost:3002
我尝试了以下方法:
http {
sendfile on;
upstream app {
server localhost:3000;
}
upstream api {
server localhost:3001;
}
upstream db {
server localhost:3002;
}
server {
listen 80;
server_name 0.0.0.0
location / {
proxy_pass http://app
}
location /api {
proxy_pass http://api
}
location /db {
proxy_pass http://db
}
}
}
我目前遇到的主要问题是位置被附加到最终路径,导致:
0.0.0.0/db
->localhost:3002/db
我猜我可以使用重写规则,但我无法正确做到这一点。
答案1
/
您最后漏掉了。
location /api {
proxy_pass http://api/
}
从文档:
如果指定了 proxy_pass 但没有指定 URI,则在处理原始请求时,请求 URI 将以与客户端发送的相同形式传递给服务器,或者在处理更改的 URI 时传递完整的规范化请求 URI
其他人也一样。