Wie stelle ich Apache so ein, dass es zum ServerName-Port umleitet?

Wie stelle ich Apache so ein, dass es zum ServerName-Port umleitet?

Ich habe gerade eine neue Ubuntu-Installation von Apache2 und Haproxy durchgeführt. Haproxy lauscht auf Port 80, Apache auf 3080, wobei letzterer von außen verborgen ist.

Mein Problem besteht darin, dass bei Verwendung eines Ordnernamens ohne abschließenden Schrägstrich beispielsweise example.com/some/folderApache automatisch auf die gleiche Adresse mit Schrägstrich, aber auch auf den falschen Port weiterleitet, example.com:3080/some/folder/!

Laut Apache-Dokumentation liegt mein Problem an der CanonicalName/Port-Konfiguration, aber Kombinationen davon scheinen nicht zu funktionieren. Was könnte ich falsch verstanden haben?

Mein virtueller Host:

<VirtualHost *:3080>

    ServerName http://example.com:80
    UseCanonicalName On
    UseCanonicalPhysicalPort On

    DirectoryIndex index.php index.html
    DocumentRoot /var/www/main

    <Directory /var/www/main>
        Options -Indexes
        Options -FollowSymLinks
        AllowOverride All

        <Files ~'^\.'>
            Order allow,deny
            Deny from all
            Satisfy all
        </Files>
    </Directory>
</VirtualHost>

Antwort1

Verwenden Sie keines von beiden;

UseCanonicalName Off
UseCanonicalPhysicalPort Off

HAProxy manipuliert (normalerweise) den gesendeten HostHeader nicht, daher sollte diese Konfiguration die generierten Weiterleitungen mit dem richtigen LocationHeader erstellen. Wenn dies nicht hilft, geben Sie dann den genauen LocationHeader an, der in der Antwort gesendet wird?

Übrigens ServerNamekann Ihr Vorgang vereinfacht werden und sollte wahrscheinlich keinen Port haben, auf dem Ihr virtueller Host nicht lauscht:

ServerName example.com

verwandte Informationen