proxy_pass和upstream区别
时间: 2024-01-30 07:01:59 浏览: 29
`proxy_pass` 和 `upstream` 都是 Nginx 中用于反向代理的关键字,但它们的作用和用法有所不同。
`proxy_pass` 是用来指定反向代理服务器的地址的。当 Nginx 接收到客户端请求时,会将请求转发给 `proxy_pass` 指定的地址,并将响应返回给客户端。例如:
```
location /api/ {
proxy_pass http://localhost:8000/;
}
```
这个配置表示将以 `/api/` 开头的请求转发给本地地址为 `http://localhost:8000/` 的服务器进行处理。
`upstream` 则是用来定义一组后端服务器的。在定义了 `upstream` 后,可以在 `proxy_pass` 中使用 `upstream` 定义的后端服务器。例如:
```
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
location /api/ {
proxy_pass http://backend/;
}
```
这个配置表示将以 `/api/` 开头的请求转发给 `upstream` 定义的后端服务器中的某一个进行处理。当请求到达 Nginx 时,Nginx 会将其转发给 `backend` 中定义的后端服务器之一。如果其中一个后端服务器不可用,Nginx 会自动将请求转发给另一个可用的后端服务器。
总的来说,`proxy_pass` 是用来指定单个后端服务器的,而 `upstream` 是用来定义一组后端服务器的。