Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2010, à 23:48

Zergy

[Apache] VirtualHost et mod_proxy sont dans un bateau...

Bonjour,

Je dispose sur mon serveur HTTP d'un système d'hôtes virtuels dynamiques via le module mod_vhost_alias afin de gérer des sous domaines facilement.

Celui-ci fonctionne ainsi :

http://plop.zergy.net

Affiche les pages se trouvant dans

/home/www/zergy.net/nossl/plop

Et :

https://plop.zergy.net

Affiche les pages se trouvant dans

/home/www/zergy.net/ssl/plop

Celà fonctionnerait bien si je n'avais pas quelques sites un peut spécieux, comme SquirrelMail ou Monit.

Cas de Monit
Monit est un logiciel de monitoring, celui-ci peut s'utiliser via un navigateur internet, cependant, monit écoute sur le port 2812, pour l'interfacer avec apache et utiliser les ports standards, il faut utiliser le mod_proxy afin de rediriger les requêtes qui lui sont destinées.
Dans mon cas, je souhaite que toutes requêtes vers

https://monit.zergy.net

Soit redirigé vers :

http://localhost:2812/

sans que cela ne remette en cas le fonctionne des hôtes virtuels dynamiques standard.
Or, il m'est impossible d'avoir les deux en même temps.

Cas de SquirrelMail
Cette machine étabt également un serveur SMTP/IMAP, j'y ai installé SquirrelMail afin de pouvoir accéder aux messages même en étant en déplacement en utilisant l'adresse suivante :

https://mail.zergy.net

Je pensais m'en sortir avec un

ln -s /usr/share/squirrelmail /home/www/zergy.net/ssl/mail

Cependant, cette méthode n'est pas satisfaisante, en effet, https://mail.zergy.net m'affiche la page de login de SquirrelMail, mais, après identification, SquirrelMail essaye de me rediriger vers une page en :

http://mail.zergy.net

Soit, au niveau du système de fichier :

/home/www/zergy.net/nossl/mail

dossier qui n'existe pas.
En corrigeant l'adresse à la main (ajout du "s" à "http"), j'arrive bien à la liste des messages.
Comment éviter ce désagrément ?

SquirrelMail fournit un fichier pour apache, que voici :

/etc/squirrelmail/apache.conf

Alias /squirrelmail /usr/share/squirrelmail

<Directory /usr/share/squirrelmail>
        Options Indexes FollowSymLinks
        <IfModule mod_php4.c>
                php_flag register_globals off
        </IfModule>
        <IfModule mod_php5.c>
                php_flag register_globals off
        </IfModule>
        <IfModule mod_dir.c>
                DirectoryIndex index.php
        </IfModule>

        # access to configtest is limited by default to prevent information leak
        <Files configtest.php>
                order deny,allow
                deny from all
                allow from 127.0.0.1
        </Files>
</Directory>

# users will prefer a simple URL like http://webmail.example.com
#<VirtualHost 80.67.176.144>
#       DocumentRoot /usr/share/squirrelmail
#       ServerName mail.example.com
#</VirtualHost>

# redirect to https when available (thanks omen@descolada.dartmouth.edu)
#
#       Note: There are multiple ways to do this, and which one is suitable for
#       your site's configuration depends. Consult the apache documentation if
#       you're unsure, as this example might not work everywhere.
#
<IfModule mod_rewrite.c>
        <IfModule mod_ssl.c>
                <Location /squirrelmail>
                        RewriteEngine on
                        RewriteCond %{HTTPS} !^on$ [NC]
                        RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}        [L]
                </Location>
        </IfModule>
</IfModule>

Fichier /etc/apache/sites-enabled/000-default_ssl

NameVirtualHost *:443
<VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /etc/ssl/certs/baba.net.crt
        SSLCertificateKeyFile /etc/ssl/private/zergy.net.key

        ServerAdmin webmaster@zergy.net
        ServerSignature Off

        ErrorLog /var/log/apache2/ssl_error.log
        CustomLog /var/log/apache2/ssl_access.log combined
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel Warn

        DocumentRoot /home/www/

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /home/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig FileInfo Indexes Limit Options
                Order allow,deny
                Allow from all
                <Files ^*.inc'>
                        Order deny,allow
                        Deny from all
                </Files>
        </Directory>

        # Dynamic Virtual Host Definitions
        <IfModule mod_vhost_alias.c>
                RewriteEngine On
                VirtualDocumentRoot /home/www/%-2.0.%-1.0/ssl/%-3+/
                VirtualScriptAlias /home/www/%-2.0.%-1.0/ssl/%-3+/cgi-bin

                ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                <DirectoryMatch "/usr/lib/cgi-bin">
                        AllowOverride None
                        Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Order allow,deny
                        Allow from all
                </DirectoryMatch>
        </IfModule>
</VirtualHost>

#<VirtualHost *:443>
#        DocumentRoot /home/www/monit
#        ServerName monit.zergy.net
#
#        ProxyRequests Off
#        ProxyPreserveHost On
#        ProxyHTMLLogVerbose On
#        LogLevel Warn
#        ProxyHTMLExtended On
#        ProxyPass / http://localhost:2812/
#        ProxyPassReverse / http://localhost:2812/
#
#        <Proxy *>
#                Order allow,deny
#                Allow from all
#        </Proxy>
#
#        <Location /monit/>
#                SetOutputFilter proxy-html
#                ProxyHTMLURLMap / /monit/
#                RequestHeader unset Accept-Encoding
#        </Location>
#</VirtualHost>

Si des personnes ont des idées sur comment tout faire fonctionner correctement. smile

Merci

Hors ligne

#2 Le 11/06/2010, à 23:40

Zergy

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

Up

Hors ligne

#3 Le 21/04/2011, à 14:04

JLX

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

Je suis preneur d'info sur le pb decrit ci-dessus , je n'ai pas de squirrelmail, mais j'ai le meme pb avec des applications type astre-rh, ou symfony...
Exactement le meme comportement observé: fenetre de login en https, puis redirection sur du http -> 404
On remplace http par https et hop ca marche....

C'est comme si la directive "Proxypassreverse" d'apache ne faisait pas son boulot....

Hors ligne

#4 Le 21/04/2011, à 14:28

Hermite2012

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

Je propose cette solution, mais c' est je ne pense pas que ce soit très propre comme façon de faire.
Une méthode pour rediriger une adresse du type http://siteport1038.mondomaine.tld vers http://siteport1038.mondomaine.tld:1038

<VirtualHost xx.xx.xx.xx:80>
        ServerName siteport1038.mondomaine.tld
        ServerAdmin webmaster@mondomaine.tld
        DocumentRoot /var/www/siteport1038
        ErrorLog /var/www/siteport1038/logs/error_log
        TransferLog /var/www/siteport1038/logs/access_log
</VirtualHost>

avec une entrée de type CNAME dans le DNS
siteport1038     IN   CNAME     www

et dans la directory

/var/www/siteport1038

un fichier index.php contenant une redirection de port

<?php
  header('Location: http://siteport1038.mondomaine.tld:1038');
?>

Dernière modification par Hermite2012 (Le 21/04/2011, à 14:31)


Seul à l'orée du bois
Il patiente et n'attend pourtant personne...
Ne croisez pas son chemin
Ses gouts diffèrent vivement des vôtres...

Hors ligne

#5 Le 21/04/2011, à 14:56

yohann

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

<VirtualHost *:80>
  ServerName siteport1038.mondomaine.tld
  #setup mod proxy
  ProxyPass / http://127.0.0.1:1038/
  ProxyPassReverse / http://127.0.0.1:1038/
  ProxyPreserveHost On
  <Proxy *>
      Order deny,allow
      Allow from all
  </Proxy>
</VirtualHost>

En plus propre avec modProxy

sudo a2enmod proxy && /etc/init.d/apache2 restart

j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#6 Le 21/04/2011, à 16:09

Hermite2012

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

Personnellement, je viens d'essayer sur un serveur où apache (80) et zimbra (8080) tournent en simultané mais ça ne fonctionne pas.

serveur internal erreur or misconfiguration , j'en reviens à mon ancienne méthode.


Seul à l'orée du bois
Il patiente et n'attend pourtant personne...
Ne croisez pas son chemin
Ses gouts diffèrent vivement des vôtres...

Hors ligne

#7 Le 21/04/2011, à 16:15

yohann

Re : [Apache] VirtualHost et mod_proxy sont dans un bateau...

je ne me rappel pas si modProxy est installé sur ubuntu par défaut:

tail /var/log/apache2/error.log

pour trouver d'ou vient l'erreur

edit: a priory mod proxy est installé par défaut (present dans /etc/apache2/mod-available)

As-tu bien lancé a2enmod proxy et redémaré apache ?

Dernière modification par yohann (Le 21/04/2011, à 16:17)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne