Documentation
Pages enfant
  • nginx

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Par défaut, nginx n'a pas de cache de TLS session tickets. Il faut l'activer avec ssl_session_cache.

Sticky sessions avec nginx open source

Bloc de code
upstream prefer_server1 {
    server server1:8080;
    server server2:8080 backup;
}

upstream prefer_server2 {
    server server1:8080 backup;
    server server2:8080;
}

...
    set $prefered_backend server2;
    if ($cookie_JSESSIONID ~ "[.](server1|server2)$") { set $prefered_backend $1; }
    proxy_pass http://prefer_$prefered_backend;   
    include proxy_params;

Envoyer une requête à tous les backends

Si vous utilisez l'affinité de session pour choisir le backend, deux pbs peuvent se poser :

  • CAS Single Logout back-channel : le serveur CAS fait une requête directement au serveur, sans passer par le navigateur. Il n'envoie donc pas de cookie de session qui permettrait de savoir quel backend choisir
  • proxy CAS : le serveur CAS envoie le PGT directement à l'application, sans passer par le navigateur. Il est souvent possible de configurer l'application pour fournir à CAS une URL directe, ne passant pas par le balancer.
Bloc de code
upstream prefer_server1 {
    server server1:8080;
    server server2:8080 backup;
}

upstream prefer_server2 {
    server server1:8080 backup;
    server server2:8080;
}

server {
    ...

    set $prefered_backend server3;
    set $fallback_backend server2;
    ...
        error_page 418 = @broadcast;
        set $need_broadcast 0;
        if ($remote_addr = 192.1.2.3) { set $need_broadcast 1; }
        if ($need_broadcast) { return 418; }
    ...

    location @broadcast {
        mirror /@mirror_to_fallback;
        mirror_request_body on; # for CAS back-channel Single-Logout
        proxy_pass http://${prefered_backend}.univ.fr:8080;
        include proxy_params;
    }
    location /@mirror_to_fallback {
        proxy_pass http://${fallback_backend}.univ.fr:8080$request_uri;
        include proxy_params;
        proxy_set_header User-Agent "Duplicated-$http_user_agent";
    }
}

Shibboleth-SP

Shibboleth-SP fournit un FastCGI authorizer. Nginx ne gère pas cela en standard.

...