2017-06-13 125 views
0

希望了解是否有任何方法可以迫使NGINX从它背后的一台特定服务器提供请求。从NGINX后面的特定服务器获取HTTP响应

我在查询NGINX服务器,我从两个不同的服务器得到响应。我可以通过查看响应中的“服务器”标题来说明这一点。一个服务器在提供数据方面一直比其他服务器慢。有什么方法可以让NGINX从更快的服务器提供内容?

即使你能指出我的方向 - 这将会有所帮助。

回答

0

您可以通过多种方式做到这一点,您可以创建一个upstream pool并将请求传递给它,也可以通过location块来完成。 Nginx也提供一些load balancer strategies来帮助像你这样的情况。

使用上游:

upstream backend { 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

server { 
    listen 80; 
    server_name example.com; 

    location/{ 
     proxy_pass http://backend; 
    } 
} 

使用位置块:

server { 
    listen 80; 
    server_name example.com; 

    location/{ 
     proxy_pass http://192.168.0.10; 
    } 
} 

负载平衡策略

最少连接 - 使用服务器与所述至少活动会话:

upstream backend { 
    least_conn; 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

会话持久性 - 航线同一用户为每个请求相同的后端:

upstream backend { 
    ip_hash; 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

加权平衡 - 发送更多的请求比另外一个服务器:

upstream backend { 
    server 192.168.0.10 weight=3; # Fast server 
    server 192.168.0.11; # Slow server 
} 

这一战略将导致快速服务器为每个请求服务3个请求提供慢速服务器服务。

+0

谢谢你的答案,但我试图从客户端做到这一点。我无法访问Nginx服务器本身。你会提出一些我可以查询Nginx的策略,这样我的请求就会被转发到更快的服务器上。我看到一些建议,发送空参数,使用没有缓存头等,但似乎没有工作。但是,是的..我正在尝试从客户端做到这一点。 –

+0

仅从客户端就很难,因为平衡策略是在服务器端决定的,所以你很难做到。 – sjdaws