如何使NGINX负载平衡服务器不代理请求?

我无法find问题的解决scheme,所以这是我的问题。

假设我有3台服务器,其中2台是上游服务器,1台是负载平衡器。

这是我的基本configuration

上游服务器

user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

负载平衡器

 worker_processes auto; worker_rlimit_nofile 100000; error_log off; events { worker_connections 5000; multi_accept on; use epoll; } http { upstream myapp1 { server 138.197.122.195; server 138.197.122.293; } server { listen 80; location / { proxy_pass http://myapp1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } } } 

我想要实现的是使用nginx的循环负载均衡function将用户的请求发送/redirect到上游服务器。 上游将直接为用户提供内容。

负载平衡器在这里的作用不是通过代理来减less上游的负载,而是平均分配请求给它们。 但是,通过这些configuration,所有请求和响应都将通过负载均衡器,消耗其带宽。 有没有另一种方法来循环redirect请求与NGINX? 请帮忙。

我想这样做的原因是我有一个体面的负载平衡器有限的带宽(高成本),因此不能有效地扩展。 比如说3个服务器每个都有100Mbps的带宽,如果一个用户消耗1Mbps的话,那么如果有101个用户,负载均衡就成为瓶颈。 如果能够将stream量平均分配给两个上游,系统可以在理论上为多达200个用户提供服务。

在最类似的话题中,我使用循环法DNS方法发现了ppl。 我对它进行了testing,但是由于DNS层次结构本身的loggingcaching以及客户端地址caching和重用,它是不可靠的。

你错了一点。 循环法是一种负载平衡方法。 你想实现什么叫DNS循环 。

但即使在这里,您也可以在链接上看到,您的stream量将通过您的负载均衡器,因为这是重点。 您可以尝试将负载平衡器取出并仅安装两台服务器,但必须将两个IP地址都设置为完全相同的域名。 虽然这可以实现你想要的,但是对你来说不会有什么好处,因为在访问期间,用户会话将被丢弃并被其他服务器接收。 而且到目前为止,我们没有谈到数据库复制,这在这种情况下也是一个问题。

我的build议是多投入负载均衡服务器的带宽,然后你就不会有任何问题。 更进一步,我将使用Session persistence以便您的用户将始终停留在他们join的服务器上。

Nginx作为负载均衡器