Projet

Général

Profil

Scénario #30019

Essayer de corriger les warning nginx

Ajouté par Joël Cuissinat il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
11/05/2020
Echéance:
22/05/2020
% réalisé:

100%

Points de scénarios:
4.0
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

Suite du scénario #29858

L'idée est de corriger au mieux les configurations Nginx en 2.7.2 et de préparer quelque chose de propre pour la 2.8.0 en se basant sur les analyses de Daniel ci-dessous.

Les tests unitaires remontent désormais la présence d'un warning nginx sur la plupart des configurations "aca" (sauf celles qui ont activer_apache à oui).
On peut les voir dans la section .. » 52 : Module tests de la page :

Peut être que certains sont acceptables et que certaines configurations sont impossibles mais cela fait beaucoup...

Toutes les combinaisons ne sont pas testées et les configurations "aca" peuvent être regroupées en 4 cas :
  1. eole-web + activer_apache à oui : scribe & thot
  2. eole-web + activer_apache à non : horus & seshat
  3. pas eole-web : eolebase, hapy, seth, sphynx, zephir
  4. eole-reverseproxy : amon
  • cas n°1 : test aca.thot + SSO local 443 (avec le warning concernant eolesso_adresse)
    • /genconfig : OK
    • /sso : OK (mais sans CSS)
    • nginx -t : OK
  • cas n°2 : test aca.seshat + SSO local 443 (avec le warning concernant eolesso_adresse)
    • /genconfig : KO (404 Not Found nginx)
    • /sso : OK
    • nginx -t : @[warn] conflicting server name "seshat.ac-test.fr" on 0.0.0.0:443, ignored@__
  • cas n°3 : test aca.sphynx + SSO local (avec le warning concernant eolesso_adresse)
    • /genconfig : OK
    • /sso : KO @(aca / La page que vous avez demandée est indisponible)@
    • nginx -t : @nginx: [warn] conflicting server name "sphynx.ac-test.fr" on 0.0.0.0:443, ignored@ (x2)
  • cas n°4 : test etb1.amon (SSO distant)
    • /genconfig : OK
    • /sso : OK (celui de etb1.scribe)
    • nginx -t : @[warn] conflicting server name "amon.etb1.lan" on 0.0.0.0:443, ignored@

Sous-tâches

Tâche #30087: S'assurer que seul les fichiers dans web.d sont générésFerméDaniel Dehennin

Tâche #30170: Supprimer le warning ajouté sur "eolesso_adresse"FerméJoël Cuissinat


Demandes liées

Lié à eole-reverseproxy - Scénario #29858: Déplacer la variable "activer_nginx_web" dans un dictionnaire "commun" Partiellement Réalisé 14/04/2020 30/04/2020
Lié à Distribution EOLE - Scénario #32576: L'EAD3 devait fonctionner sur tous les modules 2.8.1 Terminé (Sprint) 28/05/2021 04/06/2021

Révisions associées

Révision 0a1a46a8 (diff)
Ajouté par Daniel Dehennin il y a presque 4 ans

Nginx log file names conflict with GenConfig

Ref: #30283
Ref: #30019

Historique

#1 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Description mis à jour (diff)

#2 Mis à jour par Matthieu Lamalle il y a presque 4 ans

C'est un problème que j'avais remonté, si l'adresse du sso est la même que celle de la machine, il y a un conflit de nom de serveur dans nginx.
C'est pour cela qu'on avait mis en warning.

#3 Mis à jour par Daniel Dehennin il y a presque 4 ans

Résumé

C'est un problème que j'avais remonté, si l'adresse du sso est la même que celle de la machine, il y a un conflit de nom de serveur dans nginx.
C'est pour cela qu'on avait mis en warning.

C’est parcequ’il ne faut pas mettre plusieurs configuration dans /etc/nginx/sites-enabled/ qui déclarent les mêmes noms et port d’écoute :

server {
    listen 443;
    server_name bidule.example.fr;
}

C’est la raison de l’existence de /etc/nginx/web.d/.

Sinon, une fois le premier chargé, les autres sont ignorés.

Dans mon exploration j’ai trouvé :

  • que des fichiers de site sont générés dans /etc/nginx/sites-enabled/ au lieu de /etc/nginx/web.d/
  • que le fichier /etc/nginx/sites-enabled/genconfig.conf ne contenait aucune restriction d’accès par adresse IP contrairement à /etc/nginx/web.d/genconfig.conf
  • qu’il peut arriver que le fichier /etc/nginx/sites-enabled/default n’existe pas, c’est lui qui contient certains paramétrage indispensables (comme server_names_hash_bucket_size)

Question ouverte

En faisant le tour des configuration, j’ai bien vu que la configuration est devenue complexe (reverse proxy/nginx tout seul/nginx + apache), ne serait-il pas temps de prévoir, un jour, une refonte complète de la configuration nginx ?

  • La déclaration des serveurs et des ports
    • un seul fichier contient la déclaration du serveur _ default écoutant sur les ports 80 et 443 (/etc/nginx/sites-enabled/default ?)
    • un seul fichier contient la déclaration du serveur %%web_url écoutant sur les ports 80 et 443 (/etc/nginx/sites-enabled/web ?)
    • un seul fichier contient la déclaration du serveur %%nom_domaine_machine écoutant sur les ports 80 et 443 (/etc/nginx/sites-enabled/eole ?)
    • un fichier déclare le wpad (c’est déjà le cas /etc/nginx/sites-enabled/wpad)
    • un fichier déclare la redirection SSO sur le port 8443 (/etc/nginx/sites-enabled/eole-sso-reverse-proxy ?)
    • un fichier déclare la redirection EAD Scribe sur le port %%revprox_ead_port (/etc/nginx/sites-enabled/eole-ead-reverse-proxy ?)
    • un fichier déclare la redirection EOP sur le port 6080 (/etc/nginx/sites-enabled/eole-eop-reverse-proxy ?)
    • un fichier déclare les URLs d’erreur pour le proxy sur les ports 81, 82, 83 et 84 (/etc/nginx/sites-enabled/eole-proxy-errors ?)
    • un fichier déclare les reverses proxy pour les noms autres que %%web_url et %%nom_domaine_machine (/etc/nginx/sites-enabled/eole-reverse-proxy ?)
    • pour rétro-compatibilité : un fichier déclare le port 7000 (c’est déjà le cas /etc/nginx/sites-enabled/eoleflask.conf)
  • La déclaration des chemins pour %%web_url et %%nom_domaine_machine (peut-être faire des sous répertoires pour différencier les deux s’il y a besoin ?)
    • un répertoire déclare les chemins accessibles par le port 443 (c’est déjà le cas /etc/nginx/web.d/, peut-être le renommer pour que cela soit plus clair ? Genre /etc/nginx/https-location.d)
    • un répertoire déclare les chemins accessibles par le port 80 (il n’existe pas /etc/nginx/http-location.d/ ?)

Il y a plus de fichier mais je trouve cela plus clair rien qu’en regardant les noms.

Étude

etb1.amon

  • Nginx écoute sur pleins de ports
    netstat -lpn | grep nginx
    tcp        0      0 0.0.0.0:6080            0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:4203            0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:83              0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:84              0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:8443            0.0.0.0:*               LISTEN      11070/nginx: master 
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      11070/nginx: master
    
  • Il n’y a pas de serveur apache
  • Le server_name sur le port 443 est fourni par 2 fichiers de configuration :
    # rgrep -F 'amon.etb1.lan' /etc/nginx/
    /etc/nginx/sites-enabled/genconfig.conf:    server_name amon.etb1.lan;
    /etc/nginx/sites-enabled/default:    server_name amon.etb1.lan;
    
  • L’URL /genconfig est fournies par trop de fichiers :
    # rgrep -i 'location /genconfig' /etc/nginx/
    /etc/nginx/sites-enabled/genconfig.conf:    location /genconfig {
    /etc/nginx/web.d/genconfig.conf:location /genconfig {
    /etc/nginx/web.d/genconfig.conf:location /genconfig/static {
    

Il ne devrait y en avoir que /etc/nginx/web.d/genconfig.conf.

aca.thot

Il faudrait que l’application SSO soit modifiée afin de supporter un préfixe (configuration statique ou depuis la requête ?)

aca.seshat

  • Nginx écoute sur les ports 443 et 7000 (reverse proxy eoleflask) :
    # netstat -lpn | grep nginx
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      778/nginx: master p 
    tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN      778/nginx: master p
    
  • Il n’y a pas d’apache
  • Le server_name est fourni par 2 fichiers :
    # rgrep -i 'seshat.ac-test.fr' /etc/nginx/
    /etc/nginx/sites-enabled/genconfig.conf:    server_name seshat.ac-test.fr;
    /etc/nginx/sites-enabled/eolesso.conf:    server_name seshat.ac-test.fr;
    
  • Les URLs /genconfig et /sso sont fournies par nginx :
    # rgrep -i 'Location /\(sso\|genconfig\)' /etc/nginx/
    /etc/nginx/sites-enabled/genconfig.conf:    location /genconfig {
    /etc/nginx/sites-enabled/eolesso.conf:    location /sso/ {
    
  • Si je supprime le fichier /etc/nginx/sites-enabled/eolesso.conf et que je redémarre le service nginx, alors je peux accéder à GenConfig après avoir régler ce problème :
    # nginx -t
    nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
    nginx: configuration file /etc/nginx/nginx.conf test failed
    
  • Il n’y a pas de fichier de configuration /etc/nginx/sites-enabled/default, donc aucun des paramétrage EOLE prévu (comme server_names_hash_bucket_size)

aca.sphynx

  • Installation de eole-sso et configuration
  • Nginx écoute sur les ports 80, 443 et 7000 :
    # netstat -lpn | grep nginx
    tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN      8060/nginx: master  
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      8060/nginx: master  
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8060/nginx: master
    
  • Il n’y a pas d’apache
  • Le server_name est fourni par 3 fichiers :
    rgrep -i 'sphynx.ac-test.fr' /etc/nginx/
    /etc/nginx/sites-enabled/default:# Configuration HTTP sphynx.ac-test.fr
    /etc/nginx/sites-enabled/default:    server_name sphynx.ac-test.fr;
    /etc/nginx/sites-enabled/default:# Configuration HTTPS sphynx.ac-test.fr
    /etc/nginx/sites-enabled/default:    server_name sphynx.ac-test.fr;
    /etc/nginx/sites-enabled/genconfig.conf:    server_name sphynx.ac-test.fr;
    /etc/nginx/sites-enabled/eolesso.conf:    server_name sphynx.ac-test.fr;
    
  • L’URL /genconfig est fournies par trop de fichiers :
    # rgrep -i 'location /genconfig' /etc/nginx/
    /etc/nginx/sites-enabled/genconfig.conf:    location /genconfig {
    /etc/nginx/web.d/genconfig.conf:location /genconfig {
    /etc/nginx/web.d/genconfig.conf:location /genconfig/static {
    
  • L’URL /sso est fournies par le mauvais fichier :
    # rgrep -i 'location /sso' /etc/nginx/
    /etc/nginx/sites-enabled/eolesso.conf:    location /sso/ {
    

Il faudrait que le sso soit fourni par /etc/nginx/web.d/eolesso.conf.

#4 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Statut changé de Nouveau à Ne sera pas résolu

#5 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Statut changé de Ne sera pas résolu à Nouveau
  • Tâche parente #29858 supprimé
  • Release mis à EOLE 2.7.2
  • Points de scénarios mis à 2.0

#6 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Tracker changé de Tâche à Scénario
  • Sujet changé de Warning nginx sur la plupart des modules à Essayer de corriger les warning nginx
  • Echéance mis à 22/05/2020
  • Version cible changé de Prestation Cadoles MEN 16-18 à sprint 2020 19-21 Equipe MENSR

#7 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Lié à Scénario #29858: Déplacer la variable "activer_nginx_web" dans un dictionnaire "commun" ajouté

#8 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Points de scénarios changé de 2.0 à 4.0

#9 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Description mis à jour (diff)

#10 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Assigné à mis à Daniel Dehennin

#12 Mis à jour par Joël Cuissinat il y a presque 4 ans

Déjà, les tests Jenkins des différents modules ne signalent plus d'erreurs liées à nginx ;)

Je vais re-tester les 4 configurations identifiées :
  • cas n°1 : test aca.thot + SSO local 443 (config à saisir)
    • /genconfig : OK
    • /sso : OK sauf CSS
    • nginx -t : OK
  • cas n°2 : test aca.seshat + SSO local 443 (port à modifier)
    • /genconfig : OK
    • /sso : OK sauf CSS
    • nginx -t : OK
  • cas n°3 : test aca.sphynx + SSO local 443 (config à saisir)
    • /genconfig : OK
    • /sso : OK sauf CSS
    • nginx -t : OK
  • cas n°4 : test etb1.amon + SSO distant 443 (config défaut)
    • /genconfig : OK
    • /sso : OK (Scribe)
    • nginx -t : OK

#13 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Statut changé de Nouveau à Terminé (Sprint)

#14 Mis à jour par Joël Cuissinat il y a presque 3 ans

  • Lié à Scénario #32576: L'EAD3 devait fonctionner sur tous les modules 2.8.1 ajouté

Formats disponibles : Atom PDF