konfigurowanie podstawowego wirtualnego hosta mod_proxy

11

Próbuję skonfigurować podstawowy wirtualny host do proxy wszystkich żądań test.local do serwera WEBrick, który mam uruchomiony na 127.0.0.1:8080, jednocześnie utrzymując wszystkie żądania do localhost przechodząc do moich plików statycznych w / var / www. Używam Ubuntu 10.04.

Mam zainstalowaną bibliotekę libapache2-mod-proxy-html i mam włączony moduł z proxy a2enmod. Mam także włączony mój wirtualny host. Jednak za każdym razem, gdy idę do test.local, zawsze pojawia się tajemniczy błąd serwera 500, a wszystkie moje logi mówią mi:

[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.

Oto mój wirtualny 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

a oto moje ustawienia dla 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>

Czy ktoś wie, co robię źle? Dzięki

SevenProxies
źródło

Odpowiedzi:

35

Wygląda na to, że nie ładujesz mod_proxy_httpmodułu (który jest potrzebny do proxy na serwerach HTTP). Nie mam przede mną Ubuntu 10.04, ale IIRC to coś takiego:

sudo a2enmod proxy_http
nickgrim
źródło
Mam zarówno proxy_http, jak i proxy_html włączone i zrestartowałem apache, ale teraz pojawia się błąd 503. Oto logi od razu po ponownym uruchomieniu z 3 odświeżeniami w firefox:
SevenProxies
[Czw 03.03.25:29 2011] [błąd] (111) Połączenie odrzucone: proxy: HTTP: próba połączenia z 127.0.0.1:8080 (localhost) nie powiodła się [czw 03.03.25:29 2011] [błąd ] ap_proxy_connect_backend wyłączanie pracownika dla (localhost) [czw 03.0326:05 2011] [błąd] proxy: HTTP: wyłączone połączenie dla (localhost) [czw 03.0326:10 2011] [błąd] proxy: HTTP: wyłączone połączenie dla (localhost)
SevenProxies
Właściwie to nagle zaczęło działać. Dziękuję Ci.
SevenProxies
1
W moim przypadku brakuje proxy_ajp (używamy AJP do łączenia się z tomcat).
Thomas Ferris Nicolaisen
właśnie uratowałeś mi życie @ThomasFerrisNicolaisen
Pras
2

Powyższa odpowiedź nie pomogła mi, ponieważ otrzymałem ten sam błąd, co w komentarzu autora w wybranej odpowiedzi. Jednak znalazłem następujący post i zmianę, która rozwiązała mój problem:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

Źródło: http://allscm.com/archives/apache2-proxy-disabled-connection-on-localhost.html

Myles Steinhauser
źródło
CentOS / RedHat / Fedora ma SELinux. Ubuntu nie.
Martijn Burger,
O rany, doskonały punkt. Brakowało mi tagu [ubuntu] w oryginalnym poście, dopiero teraz widzę, że lata później. W tym czasie miałem problem z CentOS 6, dlatego moja niedokładna odpowiedź tutaj.
Myles Steinhauser,