【问题标题】:Unable to start nginx 1.9.4 with a sticky module enabled无法在启用粘性模块的情况下启动 nginx 1.9.4
【发布时间】:2016-01-17 18:33:39
【问题描述】:

我的云实例上安装了 nginx 1.9.4。但是启用粘性模块后,我无法使用“sudo service nginx start”启动 nginx。但是当它被删除时,我可以启动它。有没有人知道是什么导致了这个问题?

upstream uesconf 
{

sticky;

    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;


}

server {

    listen   80;
    server_name xxx.xxx.xxx;
    rewrite ^/(.*) http://xxx.xxx.xxx/$1 permanent;


    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;

}

server {

   listen 443;
   server_name xxx.xxx.xxx;

   ssl on;
   ssl_certificate /etc/nginx/conf.d/keys/xxx.crt;
   ssl_certificate_key /etc/nginx/conf.d/keys/xxx.key;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    client_max_body_size 20M;


   location / {
       index index.html;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       proxy_set_header Host $http_host;
       proxy_read_timeout 5m;
       proxy_send_timeout 5m;

       proxy_pass https://uesconf;
       proxy_redirect https://uesconf https://xxx.xxx.xxx/;

   }

}

【问题讨论】:

  • 我之所以需要一个粘性会话是因为负载均衡器不记得将请求发送到后端的服务器 ip,因此用户如果不使用强制“记住我”就无法登录
  • 你用nginx -t命令检查了吗?
  • @AlexeyTen 是的。它给了我以下确认信息。 nginx:配置文件/etc/nginx/nginx.conf 语法ok nginx:配置文件/etc/nginx/nginx.conf 测试成功

标签: nginx


【解决方案1】:

而不是使用粘性会话尝试处理标准的方式来根据每个客户端重用相同的服务器 IP:

upstream backend {
    hash $remote_addr consistent;

    server backend1.example.com;
    server backend2.example.com;
}

你的情况如下:

upstream uesconf {
    hash $remote_addr consistent;
    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;
    server xxx.xxx.xxx.xxx:9443;
}

【讨论】:

  • 感谢@Anatoly,这解决了问题。
  • 我做到了,一旦我达到15级声望就会出现:)
  • 尽管这解决了最初的问题,但通过 nginx 加载页面仍然非常缓慢,并且会话超时过快。有解决办法吗?
  • 提供的解决方案始终将用户定向到第一个 ip。还有其他方法可以平衡四个节点之间的负载吗?
  • 我认为这种行为是预期的(与粘性会话相同),指令 hash 根据客户端 IP 地址将客户端粘贴到其后端 $remote_addr。是否需要通过其他属性进行负载均衡?
猜你喜欢
  • 1970-01-01
  • 2021-08-31
  • 2019-07-27
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 2021-03-03
相关资源
最近更新 更多