首页 文章

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

提问于
浏览
2

我有一个网络服务,我想通过URL 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 ,这意味着用户应该只能看到URL 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 回答

  • 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
    

    使用此功能,您可能不想删除代理 .

相关问题