Anomalie #1988
eole-web et eole-reverseproxy ne fonctionne pas par défaut ensemble
Description
Si on installe eole-web et eole-reverseproxy sur la même machine (EOLE 2.3), eole-reverseproxy n'est pas configurable facilement.
Sur AmonEcole il est possible de le faire facilement avec la variable revprox_container_domain. Mais elle n'est disponible que dans le dictionnaire 50-amonecole.xml.
Je propose de rappartrier cette question dans 25_nginx.xml (donc il faut la supprimer dans 50_amonecole.xml).
J'ai mis un calcul automatique sur le nom de domaine du serveur web en reprenant le contenu de la variable "nom_domaine_local". J'avoue ne plus comprendre l'histoire du domaine local et académique ...
Enfin eole-firewall n'est pas géré correctement.
--- 25_nginx.xml.old 2011-08-24 22:04:20.222274033 +0200 +++ 25_nginx.xml 2011-08-24 22:42:43.522258160 +0200 @@ -8,6 +8,7 @@ <file name='/var/www/nginx-default/nginx.html' source='nginx.html'/> <file name='/var/www/index.html' source='nginx.no_proxy.html'/> <file name="/var/www/wpad.dat" mode='775'/> + <file name="/usr/share/eole/firewall/00_root_reverseproxy.fw" /> <!--<file name="/etc/squid/domaines_noauth_acad"/> <file name="/etc/squid/domaines_nocache_acad"/> <file name="/etc/nginx/sites-enabled/access_proxy"/>--> @@ -15,11 +16,15 @@ <!--************************************************************************************************* --> <variables> <family name='services'> + <variable name='activer_apache' type='oui/non' description="Activer le serveur web Apache" hidden='True' exists='False'> + <value>non</value> + </variable> <variable name='activer_revprox' type='oui/non' description='Activer le reverse proxy Nginx'> <value>non</value> </variable> </family> <family name='Reverse proxy' hidden='True'> + <variable name='revprox_container_domain' type='string' description="Nom de domaine du serveur web" /> <variable name='revprox_sso' type='string' description="Nom de domaine du serveur SSO" /> <variable name='revprox_poshadmin' type='string' description="Nom de domaine du serveur d'administration Envole 2" /> <variable name='revprox_ead' type='string' description="IP du Scribe" hidden='True' /> @@ -46,6 +51,7 @@ <separators> <separator name='revprox_sso'>Redirection de services particuliers</separator> <separator name='revprox_activate_http'>Redirection HTTP et HTTPS</separator> + <separator name='revprox_container_domain'>Redirection vers le serveur web local</separator> </separators> </variables> <constraints> @@ -58,11 +64,18 @@ <auto target='revprox_ead' name='auto_copy_val'> <param type='eole'>revprox_poshadmin</param> </auto> + <fill name='calc_val' target='revprox_container_domain'> + <param type='eole' name='valeur'>nom_domaine_local</param> + </fill> <!-- **** Conditions **** --> <condition name='hidden_if_in' source='activer_revprox'> <param>non</param> <target type='family'>Reverse proxy</target> </condition> + <condition name='hidden_if_in' source='activer_apache'> + <param>non</param> + <target type='variable'>revprox_container_domain</target> + </condition> <!-- **** Groupes **** --> <group master='revprox_domainname'> <slave>revprox_rep</slave>
et le fichier 00_root_reverseproxy.fw
%if %%revprox_activate_http == 'oui' or (%%is_defined('container_ip_web') and %%revprox_container_domain != '') allow_dest(interface='eth0', ip='0/0', port='80') allow_dest(interface='eth0', ip='0/0', port='443') %end if
Related issues
Associated revisions
eole-web et eole-reverseproxy ne fonctionne pas par défaut ensemble (Fixes: #1988).
- reverseproxy/dicos/25_nginx.xml: Add a variable to ask to configure
automatically the reverse proxy on local web applactions.
Add reverseproxy firewall management in root container.
- reverseproxy/tmpl/00_root_reverseproxy.fw: Configure firewall for
reverseproxy.
- reverseproxy/tmpl/nginx.default: Configure reverseproxy for local web
applications.
History
#1 Updated by Emmanuel GARETTE (2) about 12 years ago
#2 Updated by Emmanuel GARETTE (2) about 12 years ago
Changement de stratégie ;)
Après réflection on a plusieurs sénarios :
- eole-web tout seul et désactivé
- eole-web tout seul et activé
- eole-web désactivé + eole-reverseproxy désactivé
- eole-web activé + eole-reverseproxy désactivé
- eole-web désactivé + eole-reverseproxy activé
- eole-web activé + eole-reverseproxy activé
Sur les 6, 1 et 3 peut être considéré comme identique tout comme 2 et 4.
Nous aurions donc :
- eole-web tout seul et désactivé eole-web désactivé + eole-reverseproxy désactivé
firewall fermé
- eole-web tout seul et activé eole-web activé + eole-reverseproxy désactivé
ouvre firewall web + web_url + pas firewall reverseproxy
- eole-web désactivé + eole-reverseproxy activé
pas firewall web + ouvre firewall reverseproxy + revprox_container_domain
- eole-web activé + eole-reverseproxy activé
pas firewall web + ouvre firewall reverseproxy + revprox_container_domain == web_url
Ce qui donne :
Suppression de revprox_container_domain.
--- 20_web.xml.old 2011-08-25 09:36:42.716750895 +0200 +++ 20_web.xml 2011-08-25 09:38:06.876724896 +0200 @@ -26,6 +26,9 @@ <variable name='activer_apache' type='oui/non' description="Activer le serveur web Apache" > <value>oui</value> </variable> + <variable name='activer_revprox' type='oui/non' description='Activer le reverse proxy Nginx' hidden='True'> + <value>non</value> + </variable> <variable name='adresse_ip_web' type='ip' hidden='True' description="Adresse IP du conteneur web"/> </family> <family name='applications web'>
--- 25_nginx.xml.old 2011-08-24 22:04:20.222274033 +0200 +++ 25_nginx.xml 2011-08-25 10:04:04.216717688 +0200 @@ -8,6 +8,7 @@ <file name='/var/www/nginx-default/nginx.html' source='nginx.html'/> <file name='/var/www/index.html' source='nginx.no_proxy.html'/> <file name="/var/www/wpad.dat" mode='775'/> + <file name="/usr/share/eole/firewall/00_root_reverseproxy.fw" /> <!--<file name="/etc/squid/domaines_noauth_acad"/> <file name="/etc/squid/domaines_nocache_acad"/> <file name="/etc/nginx/sites-enabled/access_proxy"/>--> @@ -15,9 +16,14 @@ <!--************************************************************************************************* --> <variables> <family name='services'> - <variable name='activer_revprox' type='oui/non' description='Activer le reverse proxy Nginx'> + <variable name='activer_apache' type='oui/non' description="Activer le serveur web Apache" hidden='True' exists='False'> <value>non</value> </variable> + <variable name='activer_revprox' type='oui/non' description='Activer le reverse proxy Nginx' exists='False'> + <value>non</value> + </variable> + <!--si existe dans web.xml, on le décache (#1988)--> + <variable name='activer_revprox' redefine='True' hidden='False' /> </family> <family name='Reverse proxy' hidden='True'> <variable name='revprox_sso' type='string' description="Nom de domaine du serveur SSO" />
--- 00_web.fw.old 2011-08-24 17:16:35.155966814 +0200 +++ 00_web.fw 2011-08-25 09:43:25.956747983 +0200 @@ -1,7 +1,11 @@ %if %%activer_apache == 'oui' +%if %%activer_revprox' == 'non' allow_src(interface='eth0', ip="0/0", port='80') allow_src(interface='eth0', ip="0/0", port='443') +%end if +%if %%is_defined('container_ip_annuaire') allow_dest(interface='eth0', container='annuaire', port='389') +%end if %if %%activer_sso == 'local' allow_dest(ip='%%adresse_ip_eth0', port='%%eolesso_port') %elif %%activer_sso == 'distant'
--- nginx.default.old 2011-08-24 17:36:38.832462158 +0200 +++ nginx.default 2011-08-25 09:51:08.412747920 +0200 @@ -15,6 +15,7 @@ proxy_buffers 6 32k; proxy_busy_buffers_size 32k; +%if %%is_defined('container_ip_proxy') # erreur pour le proxy server { %if %%mode_conteneur_actif != 'non' @@ -92,6 +93,7 @@ deny all; } } +%end if %set %%dom_dict={} %if %%revprox_activate_http == 'oui' @@ -100,8 +102,8 @@ %end for %end if % if %%revprox_activate_http == 'oui' -%if %%is_defined('revprox_container_domain') and %%is_defined('container_ip_web') and %%revprox_container_domain != '' -%%dom_dict.setdefault(%%revprox_container_domain, []).append(('/', 'redirige vers https', 'oui', 'https://'+%%container_ip_web)) +%if %%is_defined('web_url') +%%dom_dict.setdefault(%%web_url, []).append(('/', 'redirige vers https', 'oui', 'https://'+%%container_ip_web)) %end if %for %%revprox_iter in %%dom_dict.keys()
Le fichier 00_root_reverseproxy.fw :
%if %%revprox_activate_http == 'oui' or (%%activer_apache == 'oui' and %%activer_revprox' == 'oui') allow_dest(interface='eth0', ip='0/0', port='80') allow_dest(interface='eth0', ip='0/0', port='443') %end if
+ la suppression de la partie AmonEcole.
+ un fill de web_url sur le nom de domaine de la machine plutôt que sur l'IP serait mieux.
#3 Updated by Joël Cuissinat about 12 years ago
- Assigned To set to Emmanuel GARETTE
- Target version set to Mises à jour 2.3 - 02 RC
vivement que tu reviennes le faire ;)
#4 Updated by Daniel Dehennin about 12 years ago
- Assigned To deleted (
Emmanuel GARETTE)
Pourquoi ajouter la variable « activer_revprox » dans le paquet eole-web.
Si c’est pour l’utiliser dans le template « 00_web.fw », ne peut-on pas utiliser %%is_defined() en plus de %if...== 'oui'/'non' ?
#5 Updated by Joël Cuissinat about 12 years ago
- Assigned To set to Daniel Dehennin
#6 Updated by Daniel Dehennin about 12 years ago
- Status changed from Nouveau to En attente d'informations
- % Done changed from 0 to 20
Emmanuel GARETTE a écrit :
[...]
--- 25_nginx.xml.old 2011-08-24 22:04:20.222274033 +0200 +++ 25_nginx.xml 2011-08-25 10:04:04.216717688 +0200 @@ -8,6 +8,7 @@ <file name='/var/www/nginx-default/nginx.html' source='nginx.html'/> <file name='/var/www/index.html' source='nginx.no_proxy.html'/> <file name="/var/www/wpad.dat" mode='775'/> + <file name="/usr/share/eole/firewall/00_root_reverseproxy.fw" /> <!--<file name="/etc/squid/domaines_noauth_acad"/> <file name="/etc/squid/domaines_nocache_acad"/> <file name="/etc/nginx/sites-enabled/access_proxy"/>-->
--- nginx.default.old 2011-08-24 17:36:38.832462158 +0200 +++ nginx.default 2011-08-25 09:51:08.412747920 +0200 @@ -100,8 +102,8 @@ %end for %end if % if %%revprox_activate_http == 'oui' -%if %%is_defined('revprox_container_domain') and %%is_defined('container_ip_web') and %%revprox_container_domain != '' -%%dom_dict.setdefault(%%revprox_container_domain, []).append(('/', 'redirige vers https', 'oui', 'https://'+%%container_ip_web)) +%if %%is_defined('web_url') +%%dom_dict.setdefault(%%web_url, []).append(('/', 'redirige vers https', 'oui', 'https://'+%%container_ip_web)) %end if %for %%revprox_iter in %%dom_dict.keys()
Le fichier 00_root_reverseproxy.fw :
%if %%revprox_activate_http == 'oui' or (%%activer_apache == 'oui' and %%activer_revprox' == 'oui') allow_dest(interface='eth0', ip='0/0', port='80') allow_dest(interface='eth0', ip='0/0', port='443') %end if
+ la suppression de la partie AmonEcole.
+ un fill de web_url sur le nom de domaine de la machine plutôt que sur l'IP serait mieux.
Au final, pour cette demande, il ne reste que les patches ci-dessus, le reste étant fait dans #1987 et #1989.
Pour le patch sur nginx.default, ne faut-il pas tester si eole-web est activé et si eole-reverseproxy est activé pour ajouter web_url ?
#7 Updated by Daniel Dehennin about 12 years ago
- Project changed from conf-scribe to conf-amon
Les patches ne s’appliquent qu’au reverse proxy, le reste était traité dans d’autres demandes.
#8 Updated by Daniel Dehennin about 12 years ago
- Status changed from En attente d'informations to Résolu
- % Done changed from 20 to 100
Appliqué par commit b354489200f15ab5b4b827f6f034c0a8f48c7bff.
#9 Updated by Fabrice Barconnière almost 12 years ago
- Status changed from Résolu to Fermé
- Distribution set to EOLE 2.3
#10 Updated by Emmanuel GARETTE almost 12 years ago
- Status changed from Fermé to Nouveau
- Target version changed from Mises à jour 2.3 - 02 RC to Mises à jour 2.3 - 03 RC
Pour que la redirection nginx fonctionne il faut :
- activer nginx (ce qui n'est pas le cas par défaut sur AmonEcole ;
- activer "Activer le reverse proxy Nginx pour http/https" ;
- comme on a des valeurs obligatoires, mettre des valeurs bidons (sauf si on a un besoin particulier) en faisant attention que ca n'écrase pas la configuration qu'on veut.
Ce n'est pas pratique.
#11 Updated by Daniel Dehennin almost 12 years ago
- Status changed from Nouveau to Résolu
#12 Updated by Fabrice Barconnière almost 12 years ago
- Status changed from Résolu to Fermé