configurar un host virtual mod_proxy básico

11

Estoy tratando de configurar un host virtual básico para proxy todas las solicitudes de test.local a un servidor WEBrick que he ejecutado en 127.0.0.1:8080 mientras mantengo todas las solicitudes a localhost yendo a mis archivos estáticos en / var / www. Estoy ejecutando Ubuntu 10.04.

Tengo instalado libapache2-mod-proxy-html y tengo el módulo habilitado con a2enmod proxy. También tengo mi host virtual habilitado. Sin embargo, cada vez que voy a test.local siempre recibo un error críptico del servidor 500 y todos mis registros me dicen que es:

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

Aquí está mi host virtual:

<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

y aquí está mi configuración para 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>

¿Alguien sabe lo que estoy haciendo mal? Gracias

SevenProxies
fuente

Respuestas:

35

Parece que no está cargando el mod_proxy_httpmódulo (que es necesario para proxy a servidores HTTP). No tengo Ubuntu 10.04 frente a mí, pero IIRC es algo así como:

sudo a2enmod proxy_http
nickgrim
fuente
Tengo proxy_http y proxy_html habilitados y reinicié apache, pero ahora recibo un error 503. Aquí están los registros justo después de reiniciar con 3 actualizaciones en firefox:
SevenProxies
[Jue 03/03 12:25:29 2011] [error] (111) Conexión rechazada: proxy: HTTP: intento de conectarse a 127.0.0.1:8080 (localhost) falló [Jue 03/03 12:25:29 2011] [error ] ap_proxy_connect_backend deshabilita al trabajador para (localhost) [jue 03 de marzo 12:26:05 2011] [error] proxy: HTTP: conexión deshabilitada para (localhost) [jue 03 de marzo 12:26:10 2011] [error] proxy: HTTP: conexión deshabilitada para (localhost)
SevenProxies
En realidad, de repente comenzó a funcionar. Gracias.
SevenProxies
1
En mi caso, faltaba proxy_ajp (usamos AJP para conectarnos con tomcat).
Thomas Ferris Nicolaisen
acabas de salvarme la vida @ThomasFerrisNicolaisen
Pras
2

La respuesta anterior no me ayudó, ya que recibía el mismo error que en el comentario del autor en la respuesta seleccionada. Sin embargo, encontré la siguiente publicación y el cambio que resolvió mi problema:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

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

Myles Steinhauser
fuente
CentOS / RedHat / Fedora tiene SELinux. Ubuntu no lo hace.
Martijn Burger
Oh mi, excelente punto. Me perdí la etiqueta [ubuntu] en la publicación original, solo que ahora veo eso años después. Estaba en CentOS 6 cuando me encontré con este problema, por lo tanto, mi respuesta inexacta aquí.
Myles Steinhauser