设置基本的mod_proxy虚拟主机


11

我正在尝试建立一个基本的虚拟主机,以将所有test.local的请求代理到我在127.0.0.1:8080上运行的WEBrick服务器上,同时将对localhost的所有请求都保留到/ var / www中的静态文件中。我正在运行Ubuntu 10.04。

我安装了libapache2-mod-proxy-html,并且已使用a2enmod代理启用了该模块。我还启用了虚拟主机。但是,每当我去test.local时,总会收到一个神秘的500服务器错误,并且我的所有日​​志都告诉我:

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

这是我的虚拟主机:

<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

这是我对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>

有人知道我在做什么错吗?谢谢

Answers:


35

似乎您没有加载mod_proxy_http模块(代理到HTTP服务器需要此模块)。我面前没有Ubuntu 10.04,但是IIRC就像这样:

sudo a2enmod proxy_http

我同时启用了proxy_http和proxy_html并重新启动了apache,但现在却遇到503错误。这是我在firefox上刷新3次后重新开始后的日志:
SevenProxies 2011年

[2011年3月3日12:25:29] [错误](111)拒绝连接:代理:HTTP:尝试连接到127.0.0.1:8080(localhost)失败[2011年3月3日12:25:29] [错误] ap_proxy_connect_backend禁用(localhost)[2011年3月03日12:26:05]的工作程序[错误]代理:HTTP:禁用(localhost)[2011年3月03日12:26:10]的连接] [错误]代理:HTTP:禁用(localhost)的连接
SevenProxies 2011年

实际上,突然之间它开始起作用。谢谢。
SevenProxies 2011年

1
在我的情况下,缺少proxy_ajp(我们使用AJP与tomcat连接)。
Thomas Ferris Nicolaisen 2014年

你只是救了我的命@ThomasFerrisNicolaisen
普拉斯

2

上面的答案对我没有帮助,因为我收到的错误与所选答案中作者评论中的错误相同。但是,我确实找到了以下帖子和更改来解决我的问题:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

资料来源:http : //allscm.com/archives/apache2-proxy-disabled-connection-on-localhost.html


CentOS / RedHat / Fedora具有SELinux。Ubuntu没有。
Martijn Burger

哦,天哪!我错过了原始帖子上的[ubuntu]标签,直到几年后才看到。遇到此问题时,我使用的是CentOS 6,因此我的答案不正确。
Myles Steinhauser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.