Scénario #30019
Essayer de corriger les warning nginx
100%
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 :- eole-web + activer_apache à oui : scribe & thot
- eole-web + activer_apache à non : horus & seshat
- pas eole-web : eolebase, hapy, seth, sphynx, zephir
- 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@
Subtasks
Related issues
Associated revisions
History
#1 Updated by Joël Cuissinat about 3 years ago
- Description updated (diff)
#2 Updated by Matthieu Lamalle about 3 years ago
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 Updated by Daniel Dehennin about 3 years ago
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 (commeserver_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 ports80
et443
(/etc/nginx/sites-enabled/default
?) - un seul fichier contient la déclaration du serveur
%%web_url
écoutant sur les ports80
et443
(/etc/nginx/sites-enabled/web
?) - un seul fichier contient la déclaration du serveur
%%nom_domaine_machine
écoutant sur les ports80
et443
(/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
et84
(/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
)
- un seul fichier contient la déclaration du serveur
- 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/
?)
- un répertoire déclare les chemins accessibles par le port
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 port443
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¶
- Nginx écoute sur les ports
7000
(reverse porxy eoleflask) et4300
(reverse proxy EAD3) :# netstat -lpn | grep nginx tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 5036/nginx: master tcp 0 0 0.0.0.0:4300 0.0.0.0:* LISTEN 5036/nginx: master
- Apache écoute sur les ports
80
et443
:netstat -lpn | grep apache tcp 0 0 192.168.0.22:443 0.0.0.0:* LISTEN 5065/apache2 tcp 0 0 192.168.0.22:80 0.0.0.0:* LISTEN 5065/apache2
- Les URLs
/genconfig
et/sso
sont fournies par Apache :rgrep -i 'Location /\(sso\|genconfig\)' /etc/apache2/ /etc/apache2/sites-available/genconfig.conf:<Location /genconfig> /etc/apache2/sites-available/eolesso.conf:<Location /sso>
- Les fichiers statiques du SSO local sont récupérés depuis la racine :
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
et7000
(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 servicenginx
, 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 (commeserver_names_hash_bucket_size
)
aca.sphynx¶
- Installation de
eole-sso
et configuration - Nginx écoute sur les ports
80
,443
et7000
:# 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 Updated by Joël Cuissinat about 3 years ago
- Status changed from Nouveau to Ne sera pas résolu
#5 Updated by Joël Cuissinat about 3 years ago
- Status changed from Ne sera pas résolu to Nouveau
- Parent task deleted (
#29858) - Release set to EOLE 2.7.2
- Story points set to 2.0
#6 Updated by Joël Cuissinat about 3 years ago
- Tracker changed from Tâche to Scénario
- Subject changed from Warning nginx sur la plupart des modules to Essayer de corriger les warning nginx
- Due date set to 05/22/2020
- Target version changed from Prestation Cadoles MEN 16-18 to sprint 2020 19-21 Equipe MENSR
#7 Updated by Joël Cuissinat about 3 years ago
- Related to Scénario #29858: Déplacer la variable "activer_nginx_web" dans un dictionnaire "commun" added
#8 Updated by Joël Cuissinat about 3 years ago
- Story points changed from 2.0 to 4.0
#9 Updated by Joël Cuissinat about 3 years ago
- Description updated (diff)
#10 Updated by Joël Cuissinat about 3 years ago
- Assigned To set to Daniel Dehennin
#11 Updated by Daniel Dehennin about 3 years ago
Au final
thot.ac-test.fr
activer_sso=local
- https://thot.ac-test.fr/sso donne
#12 Updated by Joël Cuissinat about 3 years ago
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 Updated by Joël Cuissinat about 3 years ago
- Status changed from Nouveau to Terminé (Sprint)
#14 Updated by Joël Cuissinat about 2 years ago
- Related to Scénario #32576: L'EAD3 devait fonctionner sur tous les modules 2.8.1 added