nginx 启动 停止 重启命令
/usr/local/nginx-1.9.9/sbin/nginx -s start /usr/local/nginx1.9.9/sbin/nginx -s stop /usr/local/nginx1.9.9/sbin/nginx -s reload
配置使用sticky
upstream iphashserver { sticky; server www.test.com:8001; server www.test.com:8002; }
具体可以附加参数如下:
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback] [secure] [httponly];
参数信息说明:
[name=route] 设置用来记录会话的cookie名称
[domain=.foo.bar] 设置cookie作用的域名
[path=/] 设置cookie作用的URL路径,默认根目录
[expires=1h] 设置cookie的生存期,默认不设置,浏览器关闭即失效,需要是大于1秒的值
[hash=index|md5|sha1] 设置cookie中服务器的标识是用明文还是使用md5值,默认使用md5
[no_fallback] 设置该项,当sticky的后端机器挂了以后,nginx返回502 (Bad Gateway or Proxy Error) ,而不转发到其他服务器,不建议设置
[secure] 设置启用安全的cookie,需要HTTPS支持
[httponly] 允许cookie不通过JS泄漏,没用过
注意点说明
- .同一客户端的请求,有可能落在不同的后端服务器上如果客户端启动时同时发起多个请求。由于这些请求都没带cookie,所以服务器会随机选择后端服务器,返回不同的cookie。当这些请求中的最后一个请求返回时,客户端的cookie才会稳定下来,值以最后返回的cookie为准。
- cookie不一定生效由于cookie最初由服务器端下发,如果客户端禁用cookie,则cookie不会生效。
- 客户端可能不带cookie,Android客户端发送请求时,一般不会带上所有的cookie,需要明确指定哪些cookie会带上。如果希望用sticky做负载均衡,请对Android开发说加上cookie。
- cookie名称不要和业务使用的cookie重名。Sticky默认的cookie名称是route,可以改成任何值。
- 客户端发的第一个请求是不带cookie的。服务器下发的cookie,在客户端下一次请求时才能生效。
- Nginx sticky模块不能与ip_hash同时使用