Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!