【发布时间】:2020-05-07 08:44:43
【问题描述】:
Rails 应用程序(4.2) 托管在 nginx 上,服务于 localhost:5478。下面代码sn-p中的ip_hash维护了服务器请求响应的一致性,按预期工作。
upstream rails {
ip_hash;
为了分担负载,ip_hash 被评论了。现在用户的登录开始失败,因为需要传递会话 cookie,而 Rails3 的工作方式类似。这与粘性会话有关,但无法追踪处理它的确切方式。
nginx.conf
upstream mongrel {
server 127.0.0.1:5469;
}
upstream rails {
#ip_hash;
server 127.0.0.1:5479;
server 127.0.0.1:5480;
server 127.0.0.1:5481;
server 127.0.0.1:5482;
}
location / {
# Setup redirection headers
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
# Pass the request thru
proxy_pass http://mongrel;
}
}
server {
listen 5478 default;
server_name _;
root "../games/public";
location ~ ^/assets/ {
root "../d2/public";
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
我尝试按照建议使用consistent_hash $scheme $request_uri;
,但consistent_hash 作为指令无法识别并失败。让我知道是否需要对 nginx 进行任何配置更改。我还发现带有 ip_hash 注释的相同 nginx 配置适用于 Rails3 应用程序,不确定这是否相关
【问题讨论】:
标签: ruby-on-rails session nginx load-balancing round-robin