Einrichten eines einfachen virtuellen mod_proxy-Hosts

11

Ich versuche, einen einfachen virtuellen Host einzurichten, um alle Anforderungen an test.local auf einen WEBrick-Server zu übertragen, der auf 127.0.0.1:8080 ausgeführt wird, während alle Anforderungen an localhost in meinen statischen Dateien in / var / www gespeichert bleiben. Ich verwende Ubuntu 10.04.

Ich habe libapache2-mod-proxy-html installiert und das Modul mit a2enmod-Proxy aktiviert. Ich habe auch meinen virtuellen Host aktiviert. Wenn ich jedoch zu test.local gehe, erhalte ich immer einen kryptischen 500-Server-Fehler und alle meine Protokolle sagen mir:

[Thu Mar 03 01:43:10 2011] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

Hier ist mein virtueller Host:

<VirtualHost test.local:80>
    LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
    ServerAdmin webmaster@localhost
    ServerName test.local
    ProxyPreserveHost On

    # prevents this folder from being proxied
    ProxyPass /static !

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

und hier sind meine Einstellungen für mod_proxy:

<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

        ProxyRequests Off

        <Proxy *>
        # default settings
                #AddDefaultCharset off
                #Order deny,allow
                #Deny from all
                ##Allow from .example.com

        AddDefaultCharset off
        Order allow,deny
        Allow from all
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block

        ProxyVia On
</IfModule>

Weiß jemand, was ich falsch mache? Vielen Dank

SevenProxies
quelle

Antworten:

35

Sieht so aus, als würden Sie das mod_proxy_httpModul nicht laden (das für den Proxy zu HTTP-Servern benötigt wird). Ich habe Ubuntu 10.04 nicht vor mir, aber IIRC ist so etwas wie:

sudo a2enmod proxy_http
Nickgrim
quelle
Ich habe sowohl proxy_http als auch proxy_html aktiviert und Apache neu gestartet, aber jetzt erhalte ich einen 503-Fehler. Hier sind die Protokolle von direkt nach dem Neustart mit 3
Aktualisierungen
[Do 03. März 12:25:29 2011] [Fehler] (111) Verbindung abgelehnt: Proxy: HTTP: Versuch, eine Verbindung zu 127.0.0.1:8080 (localhost) herzustellen, fehlgeschlagen [Do 03. März 12:25:29 2011] [Fehler ] ap_proxy_connect_backend Worker für (localhost) deaktivieren [Do 03. März 12:26:05 2011] [Fehler] Proxy: HTTP: Verbindung für (localhost) deaktiviert [Do 03. März 12:26:10 2011] [Fehler] Proxy: HTTP: Verbindung für (localhost)
deaktiviert
Eigentlich fing es plötzlich an zu funktionieren. Vielen Dank.
SevenProxies
1
In meinem Fall fehlte proxy_ajp (wir verwenden AJP, um eine Verbindung mit Tomcat herzustellen).
Thomas Ferris Nicolaisen
Du hast mir gerade das Leben gerettet @ThomasFerrisNicolaisen
Pras
2

Die obige Antwort hat mir nicht geholfen, da ich den gleichen Fehler wie im Kommentar des Autors in der ausgewählten Antwort erhalten habe. Ich habe jedoch den folgenden Beitrag und die folgende Änderung gefunden, die mein Problem gelöst haben:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

Quelle: http://allscm.com/archives/apache2-proxy-disabled-connection-on-localhost.html

Myles Steinhauser
quelle
CentOS / RedHat / Fedora hat SELinux. Ubuntu nicht.
Martijn Burger
Oh mein Gott, ausgezeichneter Punkt. Ich habe das [ubuntu] -Tag auf dem ursprünglichen Beitrag verpasst, erst jetzt, Jahre später. Ich war auf CentOS 6, als ich auf dieses Problem stieß, daher meine ungenaue Antwort hier.
Myles Steinhauser