configurando um host virtual mod_proxy básico

11

Estou tentando configurar um host virtual básico para fazer proxy de todas as solicitações para test.local para um servidor WEBrick em execução no 127.0.0.1:8080, mantendo todas as solicitações para o host local indo para meus arquivos estáticos em / var / www. Estou executando o Ubuntu 10.04.

Tenho o libapache2-mod-proxy-html instalado e o módulo ativado com o proxy a2enmod. Eu também tenho meu host virtual ativado. No entanto, sempre que vou para test.local, sempre recebo um erro enigmático do servidor 500 e todos os meus logs estão dizendo:

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

Aqui está o meu 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

e aqui estão minhas configurações 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>

Alguém sabe o que estou fazendo de errado? obrigado

SevenProxies
fonte

Respostas:

35

Parece que você não está carregando o mod_proxy_httpmódulo (necessário para fazer proxy para servidores HTTP). Eu não tenho o Ubuntu 10.04 na minha frente, mas o IIRC é algo como:

sudo a2enmod proxy_http
nickgrim
fonte
Eu tenho o proxy_http e o proxy_html habilitados e reiniciei o apache, mas agora estou recebendo um erro 503. Aqui estão os logs logo depois que eu reiniciei com 3 atualizações no firefox:
SevenProxies
[Qui 03 de março 12:25:29 2011] [erro] (111) Conexão recusada: proxy: HTTP: tentativa de conexão com 127.0.0.1:8080 (localhost) falhou [Qui 03 de março 12:25:29 2011] [erro ] ap_proxy_connect_backend desativando o trabalhador para (localhost) [quinta-feira, 03 de março 12:26:05 2011] [erro] proxy: HTTP: conexão desativada para (localhost) [quinta-feira 03 de março 12:26:10 2011] [erro] de proxy: HTTP: conexão desabilitada para (localhost)
SevenProxies 03/03
Na verdade, de repente, começou a funcionar. Obrigado.
precisa saber é o seguinte
1
No meu caso, proxy_ajp estava ausente (usamos o AJP para conectar-se ao tomcat).
Thomas Ferris Nicolaisen
u acabou de salvar minha vida @ThomasFerrisNicolaisen
Pras
2

A resposta acima não ajudou em nada, pois estava recebendo o mesmo erro do comentário do autor na resposta selecionada. No entanto, encontrei a seguinte postagem e a alteração que resolveu meu problema:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

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

Myles Steinhauser
fonte
O CentOS / RedHat / Fedora possui o SELinux. Ubuntu não.
Martijn Burger
Oh meu, excelente ponto. Perdi a tag [ubuntu] na postagem original, só agora vendo isso anos depois. Eu estava no CentOS 6 no momento em que encontrei esse problema, portanto, minha resposta imprecisa aqui.
Myles Steinhauser