Apache 代理错误的浏览器 URL

Apache 代理错误的浏览器 URL

我正在使用以下内容VirtualHost和 mod_proxy 将我的“api”子域的所有请求代理到位于我webapps/webservice的 Tomcat 上的 Java webservice。

<VirtualHost *:80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /webservice http://localhost:8080
    ProxPassReverse / http://localhost:8080
</VirtualHost>

我的问题是,如果我输入“api.mydomain.com”,我会被重定向到“api.mydomain.com/webservice”,并且出现 404 错误,因为“webservicewebservice”不可用。

有人知道该怎么办吗?

解决方案: 尽管我之前尝试过这个解决方案,但 Stony 是对的!我遇到的问题是,即使我没有更改任何内容,我也必须重新启动 Tomcat 才能使其正常工作。我多次重新启动 Apache,但什么也没改变。

答案1

我不知道我是否正确理解了您的问题,但如果您不想webservice在 URL 中使用 。那么请将您的代理密码设置为/

<VirtualHost *::80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/webservice/
    ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>

或者您想在该域下运行您的 Web 服务?并且您不想要重定向?

答案2

经过多次测试和多次错误后,我最终找到了以下解决方案。

我像这样设置我的 apache 虚拟主机:

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny, allow
        Allow from all
    </Proxy>                                                                        
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ServerName api.mydomain.com
</VirtualHost>

现在,它只是代理对我的 Tomcat 端口 8080 的所有请求api.mydomain.com,而不指向特定的目录。

然后我将其添加到/etc/tomcat7/server.xml

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

正如ProxyPreserveHost在我的 Apache 虚拟主机中激活的那样,Tomcat 获取原始请求的主机名,并能够自行决定要传递哪些内容。

appBase="webapps"即使内容位于其他地方,其内容似乎是从根目录传送的。

相关内容