Tomcat
mod_proxy tomcat
我在幾個地方問過這個問題,但沒有找到答案。這應該很簡單,也是一個很常見的問題。不幸的是,我對 tomcat 和 mod_proxy 一無所知,所以我無法弄清楚。
我有一些在 tomcat 中執行的應用程序,作為戰爭安裝,我可以在以下位置訪問它們
myserver.com:8080/myapp
我只是想創建一個使用 mod_proxy將myapp.myserver.com轉發到這個myserver.com:8080/myapp的 apache vhost。
Hudson 就是一個完美的例子,沒有額外的配置,只是一場部署戰爭。所以我設置了以下apache vhost:
<VirtualHost *:80> ServerName hudson.myserver.ca ProxyPreserveHost On ProxyPass / http://localhost:8080/hudson ProxyPassReverse / http://localhost:8080/hudson </VirtualHost>
我的 proxy.conf 是:
<IfModule mod_proxy.c> ProxyRequests Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> # Enable/disable the handling of HTTP/1.1 "Via:" headers. # ("Full" adds the server version; "Block" removes all outgoing Via: headers) # Set to one of: Off | On | Full | Block ProxyVia On </IfModule>
每個應用程序上的每個請求都具有相同的行為。例如,我去 hudson.myserver.ca,它出於某種原因轉發到 hudson.myserver.ca/hudson,它給出了一個 tomcat 404,上面寫著
The requested resource (/hudsonhudson/) is not available.
發生在 hudson、jira、confluence 和任何其他應用程序上。
額外的“哈德森”是怎麼回事,為什麼這不起作用?
您的代理配置應為:
ProxyPass / http://localhost:8080/hudson/ ProxyPassReverse / http://localhost:8080/hudson/
然後,您需要首先找出導致
302
重定向的原因。其他地方可能有導致它的重寫規則。另一方面,您可能需要考慮使用mod_proxy_ajp代替 Tomcat 連接,因為這就是它的用途。