Apache 代理瀏覽器 url 錯誤

Apache 代理瀏覽器 url 錯誤

我使用以下內容VirtualHost和 mod_proxy 將“api”子網域的所有請求代理到位於webapps/webserviceTomcat 上的 Java Web 服務。

<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”不可用。

有人知道該怎麼辦嗎?

解決方案: 儘管我以前嘗試過這個解決方案,但斯托尼是對的!我的情況的問題是,即使我沒有更改任何內容,我也必須重新啟動 Tomcat 才能使其正常工作。我多次重新啟動 Apache,但這並沒有改變任何事情。

答案1

我不知道我是否正確理解你的問題,但如果你不想webservice在你的網址中出現。然後將您的代理通行證設定為/

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

或者您想在該網域下運行您的網路服務嗎?您不想要重定向嗎?

答案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>

現在它只是代理api.mydomain.com對連接埠 8080 上的 Tomcat 的所有請求,而不指向特定目錄。

然後我將其添加到/etc/tomcat7/server.xml

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

正如ProxyPreserveHost在我的 Apache 虛擬主機中所啟動的那樣,Tomcat 會取得原始請求的主機名,並能夠自行決定傳送哪些內容。

內容appBase="webapps"似乎是從根目錄傳遞的,即使它位於其他地方。

相關內容