与Nginx代理的粘性会话

前端之家收集整理的这篇文章主要介绍了与Nginx代理的粘性会话前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个应用程序在两个不同的AWS实例上运行,我想基于IP启用“粘性”或“持久”会话,以便我可以以特定方式利用Web套接字技术.

我有两个不同的设置,都涉及使用ip_hash来启用这些粘性会话.

在第一个设置中,应用程序进程在与Nginx配置相同的实例上运行.这是有效的,会议按预期持久.

upstream my_app {
    ip_hash;
    # local servers
    server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
    server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

在第二个设置中,我指向外部实例并尝试实现相同的效果.此设置无效.换句话说,会话仍然是负载平衡的.

upstream my_app {
    ip_hash;
    # external servers
    server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
    server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

我正确使用ip_hash吗?如何为外部服务器启用“粘性”基于IP的会话?

最佳答案
根据Nginx文档,Sticky会话支持仅适用于其昂贵的Plus版本.
我一直在研究替代方案,而我越接近这个老叉子与Nginx 1.5 https://github.com/lusis/nginx-sticky-module不兼容

我还试图构建一个LUA模块,但没有用于对等选择的API挂钩,仅用于枚举和阻塞.

Nginx Plus Load Balancing

更新

我找到了另一个很棒的模块,见https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src

猜你在找的Nginx相关文章