Project

General

Profile

Anomalie #1988

eole-web et eole-reverseproxy ne fonctionne pas par défaut ensemble

Added by Emmanuel GARETTE (2) about 10 years ago. Updated almost 10 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
08/24/2011
Due date:
% Done:

100%

Spent time:
Distribution:
EOLE 2.3

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

Related to conf-amon - Anomalie #1989: eole-reverseproxy démarre wpad même si le proxy n'est pas sur la machine Fermé 08/24/2011
Related to conf-scribe - Anomalie #1987: eole-web sans annuaire et avec reverseproxy Fermé 08/24/2011
Related to conf-amonecole - Anomalie #2143: eole-web et eole-reverseproxy ne fonctionne pas par défaut ensemble Fermé 08/24/2011

Associated revisions

Revision b3544892 (diff)
Added by Daniel Dehennin almost 10 years ago

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 10 years ago

Je ne sais pas trop comment lier le bug ... j'ai l'impression qu'un utilisateur simple ne peut pas.

Donc il faut lier au bug #1987 et #1861

#2 Updated by Emmanuel GARETTE (2) about 10 years ago

Changement de stratégie ;)

Après réflection on a plusieurs sénarios :

  1. eole-web tout seul et désactivé
  2. eole-web tout seul et activé
  3. eole-web désactivé + eole-reverseproxy désactivé
  4. eole-web activé + eole-reverseproxy désactivé
  5. eole-web désactivé + eole-reverseproxy activé
  6. 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 :

  1. eole-web tout seul et désactivé eole-web désactivé + eole-reverseproxy désactivé

firewall fermé

  1. eole-web tout seul et activé eole-web activé + eole-reverseproxy désactivé

ouvre firewall web + web_url + pas firewall reverseproxy

  1. eole-web désactivé + eole-reverseproxy activé

pas firewall web + ouvre firewall reverseproxy + revprox_container_domain

  1. 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 10 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 almost 10 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 almost 10 years ago

  • Assigned To set to Daniel Dehennin

#6 Updated by Daniel Dehennin almost 10 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 almost 10 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 almost 10 years ago

  • Status changed from En attente d'informations to Résolu
  • % Done changed from 20 to 100

#9 Updated by Fabrice Barconnière almost 10 years ago

  • Status changed from Résolu to Fermé
  • Distribution set to EOLE 2.3

#10 Updated by Emmanuel GARETTE almost 10 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 10 years ago

  • Status changed from Nouveau to Résolu

La dépendence de revprox_auto_config_local_web sur revprox_activate_http a disparu depuis le da51807.

Un paquet eole-reverseproxy 2.3-eole90 contient la modification (voir 0d5a0c3)

#12 Updated by Fabrice Barconnière almost 10 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF