web-dev-qa-db-fra.com

haproxy + Apache + hôtes virtuels -> le mauvais hôte est affiché

Sur CentOS 7.2.1511 Linux, j'ai installé les packages haproxy-1.5.14-3.el7.x86_64 et httpd-2.4.6-40.el7.centos.1.x86_64.

Le /etc/haproxy/haproxy.cfg lie HAProxy aux ports 80 et 443 et accepte HTTPS sur slova.de:

defaults
    mode                    http
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
....
frontend public
    bind 144.76.184.151:80
    bind 144.76.184.151:443 ssl crt /etc/pki/tls/certs/slova.de.pem
    reqidel ^X-Forwarded-Proto:
    reqidel ^X-Forwarded-For:
    reqadd X-Forwarded-Proto:\ https if { ssl_fc }
    default_backend Apache

backend Apache
    server domain 127.0.0.1:8080

Le /etc/httpd/conf/httpd.conf lie Apache au port 8080 et sert quelques sites Wordpress:

Listen 127.0.0.1:8080
ServerName 144.76.184.151

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/afarber.de
    ServerName afarber.de
    ErrorLog logs/afarber.de/error_log
    CustomLog logs/afarber.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/ruhrgebietsingle.de
    ServerName ruhrgebietsingle.de
    ErrorLog logs/ruhrgebietsingle.de/error_log
    CustomLog logs/ruhrgebietsingle.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/bukvy.de
    ServerName bukvy.de
    ErrorLog logs/bukvy.de/error_log
    CustomLog logs/bukvy.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/slova.de
    ServerName slova.de
    ErrorLog logs/slova.de/error_log
    CustomLog logs/slova.de/access_log common
</VirtualHost>

Quand j'ouvre http://slova.de ou https://slova.de ils fonctionnent bien.

Mais lorsque j'essaie d'ouvrir les URL ci-dessus avec www. préfixé, le navigateur affiche plutôt http://ruhrgebietsingle.de (le deuxième site sur 4).

Pourquoi ça se passe? Je ne peux tout simplement pas le comprendre.

Quel outil aiderait ici à déboguer?

Dans la console de débogage de Chrome navigateur, je vois 301 Moved Permanently - mais qui et pourquoi l'envoie?

screenshot

1
Alexander Farber

Ok, je devais ajouter ServerAlias pour chaque serveur, je n'y avais pas pensé, car j'avais auparavant une règle mod_rewrite pour supprimer le préfixe www. ...

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/afarber.de
    ServerName afarber.de
    ServerAlias *.afarber.de
    ErrorLog logs/afarber.de/error_log
    CustomLog logs/afarber.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/ruhrgebietsingle.de
    ServerName ruhrgebietsingle.de
    ServerAlias *.ruhrgebietsingle.de
    ErrorLog logs/ruhrgebietsingle.de/error_log
    CustomLog logs/ruhrgebietsingle.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/bukvy.de
    ServerName bukvy.de
    ServerAlias *.bukvy.de
    ErrorLog logs/bukvy.de/error_log
    CustomLog logs/bukvy.de/access_log common
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
    DocumentRoot /var/www/html/slova.de
    ServerName slova.de
    ServerAlias *.slova.de
    ErrorLog logs/slova.de/error_log
    CustomLog logs/slova.de/access_log common
</VirtualHost>
1
Alexander Farber