反向代理:不需要的URL更改

时间:2014-11-24 16:10:17

标签: apache apache2 mod-proxy http-proxy

我想通过网址foo.com/bar展示一项网络服务。 但是我的Apache反向代理不能按预期工作。 我创建了文件001-default.conf,其中包含以下代码:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass /bar http://foo.com:8080/bar
    ProxyPassReverse /bar foo.com:8080/bar

    DocumentRoot /var/www/foo/
    ServerName info.foo.com
    <Directory /var/www/foo>
            Options Indexes FollowSymLinks MultiViews Includes
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

现在我收到404错误代码。

我希望foo.com/bar上的所有点击都能被静默重定向到foo.com:8080/bar,这意味着用户只能看到网址foo.com/bar。 反向代理重定向还应包括foo.com/bar?=foobar

等请求

我确实启用了proxy_http和proxy:

% sudo a2enmod proxy_http        
  Considering dependency proxy for proxy_http:
  Module proxy already enabled
  Module proxy_http already enabled

我希望有人可以帮助我。

类似的问题没有解决我的问题:     apache reverse proxy changes url Transparent redirect to port 8080

1 个答案:

答案 0 :(得分:2)

尝试将配置编辑为:

<VirtualHost *:80>
    <Proxy *> 
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass /bar http://foo.com:8080  # Note removed /bar
    ProxyPassReverse /bar foo.com:8080  # Note removed /bar

    DocumentRoot /var/www/foo/
    ServerName info.foo.com
    <Directory /var/www/foo>
            Options Indexes FollowSymLinks MultiViews Includes
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

您也可以尝试使用mod_alias来避免现在可能面临的te / bar / bar问题。 我对此不太了解,请参阅文档:http://httpd.apache.org/docs/2.2/mod/mod_alias.html

尝试将此内容添加到您的conf中

 Alias /bar http://foo.com:8080

使用此功能,您可能无法删除代理。