Bonjour à tous.
J'ai récemment revu la config de mon reverse proxy, à l'occasion d'un passage en SSL/TLS.
Il s'agit d'une architecture basique, où tous les serveurs sont vus de la même manière en interne (chacun son nom et IP) et en externe (tous les noms d'hôte pointent vers la même IP), sans aucune modification d'URL, et le certificat utilisé est donc un wildcard.
Jusqu'alors j'utilisais des définitions de VirtualHosts multiples, un VirtualHost par serveur "reverse-proxyfié". Difficilement maintenable...
Maintenant, je n'en ai plus que 2, un pour le HTTP (simple redirecteur) et un pour le HTTPS, avec un paquet de RewriteCond et RewriteRule [P] derrière.
N'étant pas expert dans le domaine, loin de là, j'aimerais beaucoup avoir un avis là-dessus.
Pour des raisons de maintenabilité là encore, toute la config serveur est celle par défaut (CentOS 5.3, Apache 2.2.3) et j'ai juste déposé un fichier reverse.conf dans /etc/httpd/conf.d.
Voici son contenu :
Question subsidiaire:
Ma liste de serveur (la vraie) est plutôt longue. J'aimerais bien la déporter dans un fichier avec un genre de RewriteMap, mais je n'ai pas réussi. C'est possible ?
NB: La partie log mériterait d'être revue (pour au moins inclure le nom de serveur), si il y a des avis là-dessus je suis preneur aussi.
Merci d'avance!
J'ai récemment revu la config de mon reverse proxy, à l'occasion d'un passage en SSL/TLS.
Il s'agit d'une architecture basique, où tous les serveurs sont vus de la même manière en interne (chacun son nom et IP) et en externe (tous les noms d'hôte pointent vers la même IP), sans aucune modification d'URL, et le certificat utilisé est donc un wildcard.
Jusqu'alors j'utilisais des définitions de VirtualHosts multiples, un VirtualHost par serveur "reverse-proxyfié". Difficilement maintenable...
Maintenant, je n'en ai plus que 2, un pour le HTTP (simple redirecteur) et un pour le HTTPS, avec un paquet de RewriteCond et RewriteRule [P] derrière.
N'étant pas expert dans le domaine, loin de là, j'aimerais beaucoup avoir un avis là-dessus.
Pour des raisons de maintenabilité là encore, toute la config serveur est celle par défaut (CentOS 5.3, Apache 2.2.3) et j'ai juste déposé un fichier reverse.conf dans /etc/httpd/conf.d.
Voici son contenu :
Code:
NameVirtualHost *:80
NameVirtualHost *:443
# Redirection HTTP vers HTTPS
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ErrorLog logs/rev_error_log
TransferLog logs/rev_access_log
# Activation et configuration SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/star_mondomaine_com.crt
SSLCertificateKeyFile /etc/pki/tls/private/star_mondomaine_com.key
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog logs/rev_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# Active le moteur de réécriture d'URL
RewriteEngine On
# Autorise l'accès proxy vers un port HTTPS
SSLProxyEngine On
# Si le serveur demandé fait partie de la liste...
RewriteCond %{SERVER_NAME} ^abc\.mondomaine\.com$ [OR]
RewriteCond %{SERVER_NAME} ^def\.mondomaine\.com$ [OR]
RewriteCond %{SERVER_NAME} ^ghi\.mondomaine\.com$ [OR]
RewriteCond %{SERVER_NAME} ^jkl\.mondomaine\.com$ [OR]
RewriteCond %{SERVER_NAME} ^mno\.mondomaine\.com$
# Autre syntaxe possible...
#RewriteCond %{SERVER_NAME} ^(abc|def|ghi|jkl)\.mondomaine\.com$
# on redirige vers lui, toujours en HTTPS...
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [P]
# Idem pour les serveurs qui ne supportent pas le HTTPS/SSL
RewriteCond %{SERVER_NAME} ^pqr\.mondomaine\.com$ [OR]
RewriteCond %{SERVER_NAME} ^stu\.mondomaine\.com$
RewriteRule ^/(.*)$ http://%{SERVER_NAME}/$1 [P]
# sinon on bloque tout!
RewriteRule ^.*$ - [F]
</VirtualHost>
Question subsidiaire:
Ma liste de serveur (la vraie) est plutôt longue. J'aimerais bien la déporter dans un fichier avec un genre de RewriteMap, mais je n'ai pas réussi. C'est possible ?
NB: La partie log mériterait d'être revue (pour au moins inclure le nom de serveur), si il y a des avis là-dessus je suis preneur aussi.
Merci d'avance!