Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

109
Visualizações
Cambios de configuración de Nginx para la sesión fija en round robin

La aplicación Rails (4.2) está alojada en nginx y sirve en localhost:5478. El ip_hash en el fragmento de código a continuación mantiene la consistencia de la respuesta a la solicitud del servidor y funciona como se esperaba.

 upstream rails { ip_hash;

Para compartir la carga, se comentó ip_hash. Ahora el inicio de sesión para el usuario comienza a fallar ya que se requiere pasar la cookie de sesión mientras funciona de manera similar para Rails3. Esto está relacionado con algo relacionado con la sesión fija, pero no se puede rastrear la forma exacta de manejarlo.

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; }

Intenté usar consistent_hash $scheme $request_uri; como se sugiere, pero consistente_hash como directiva no se reconoce y falla. Avíseme si se requiere algún cambio de configuración para nginx. También encontré la misma configuración de nginx con trabajos comentados de ip_hash para la aplicación Rails3, no estoy seguro si esto está relacionado

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hay dos formas de hacer esto, ya sea:

  1. comparte sus sesiones entre sus backends, o
  2. pasa una cookie para permitir que nginx pegue un cliente a un servidor ascendente.

Avíseme si se requiere algún cambio de configuración para nginx.

si no puede modificar la aplicación, por ejemplo, permitir que varias instancias de la aplicación usen un almacenamiento común, puede intentar usar la directiva sticky de nginx (>=1.5.7).

Usando tu ejemplo, debería ser algo como

 http { ... upstream rails { server 127.0.0.1:5479; server 127.0.0.1:5480; server 127.0.0.1:5481; server 127.0.0.1:5482; sticky rails_sticky expires=1d domain=.rails.local path=/ httponly secure; } ... server { listen 5478; server_name rails.local; root "../games/public"; location / { 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; proxy_pass http://rails; } ... } ... }

Es posible que deba ajustar su configuración de acuerdo con su entorno.

Usando sticky , nginx debe verificar y enlazar un cliente usando una cookie adhesiva llamada rails_sticky , si aún no está enlazada. La vinculación de un cliente aún verifica cualquier método de equilibrio que establezca en la directiva upstream , round-robin ponderado de forma predeterminada.

Si el cliente se ha vinculado a un servidor, cualquier solicitud posterior se reenviará al servidor ascendente designado. En caso de que no se pueda usar el servidor ascendente designado, nginx volverá a vincular el cliente a otro servidor.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda