Apache-2.2

Apache 代理錯誤的瀏覽器 url

  • September 28, 2015

我正在使用以下內容VirtualHost和 mod_proxy 將對我的“api”子域的所有請求代理到位於webapps/webservice我的 Tomcat 上的 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”,並且因為“webservicewebservice”不可用而出現 404 錯誤。

有人知道該怎麼做嗎?

解決方案: 儘管我之前嘗試過這個解決方案,但 Stony 是對的!我的問題是,即使我沒有改變任何東西,我也必須重新啟動 Tomcat 才能使其工作。我多次重新啟動 Apache,但這並沒有改變任何東西。

經過一些測試和許多錯誤,我終於想出了以下解決方案。

我這樣設置我的 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>

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

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

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

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

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

我不知道我是否正確理解了您的問題,但如果您不希望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>

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

引用自:https://serverfault.com/questions/725009