Pages : 1
#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.
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