nginx 中的 upstream 是什么意思?

246
upstream app_front_static {
    server 192.168.206.105:80;
}

第一次看到,有人知道它是什么意思吗?

3个回答

259

它用于代理请求到其他服务器

http://wiki.nginx.org/LoadBalanceExample中的一个例子是:

http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;    
    server 127.0.0.1:8003;
  }

  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
    }
  }
}

这意味着所有对 / 的请求都会转到上游 XXX 列出的任何服务器,优先使用端口 8000。


2
为什么你要使用 **http {}**?我的配置文件中没有,但它还是可以工作。只是好奇。 - Olivier Pons
9
或许您的配置文件位于/etc/nginx/conf.d/default.conf,该文件被包含在/etc/nginx/nginx.conf中并拥有http {}块。 - srghma

56

26

如果我们只有一个服务器,我们可以直接将其包含在proxy_pass指令中。例如:

  server {
    ...
    location / {
      proxy_pass http://192.168.206.105:80;
      ...
    }
  }

但是如果我们有很多服务器,我们使用upstream来维护这些服务器。Nginx 将根据传入的流量进行负载均衡,如在此答案中所示。


1
谢谢。我正在尝试为一个后端服务器进行“上游传输”,但出现了太多打开文件错误等问题。这是我想要的用于测试设置代理到Mojolicious的内容。 - Hugh Barnard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接