這是一個讓我瘋狂的問題。我有一個活躍的在用的Apache代理服務器,它提供EC2上的內容。它的工作的偉大,並具有多種是這樣來配置虛擬主機的:針對URLS的Apache ProxyPass不一致地失敗
<VirtualHost *:80>
ServerName m.FOO.com
ServerAlias customer.FOO.com
ProxyPreserveHost On
ProxyPass/ajp://10.211.42.48:8009/
ProxyPassReverse/ajp://10.211.42.48:8009/
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
這些都工作很好,和我有沒有問題。現在我想要做的是移動它,而不是爲每個應用程序使用一個虛擬主機,我希望在主站點上有一個代理服務器的子網址。因此,不是有'customer.FOO.com'的客戶,他們將擁有'FOO.com/customer/'
好極了,聽起來很簡單吧?是的,沒有那麼多。我編輯服務器的「根」的虛擬主機條目(當前顯示着陸頁),並將代理條目添加到該目錄中。應該這樣做,對吧?是的,這是不是:
<VirtualHost *:80>
ServerName web01.aws.FOO.com
DocumentRoot /var/www/html
ErrorLog logs/www.FOO.com-error_log
CustomLog logs/www.FOO.com-access_log common
<Location /a>
ProxyPass ajp://10.211.42.48:8009
ProxyPassReverse ajp://10.211.42.48:8009
</Location>
<Location /t>
ProxyPass http://adm01
ProxyPassReverse http://adm01
</Location>
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
如果我打http://www.FOO.com/t/ - 我得到的內部網絡服務器 - 它正向正確的代理,一切都很好。如果我點擊http://www.FOO.com/a/,則會出現404錯誤。訪問日誌甚至顯示404錯誤。
請注意,ProxyPass AJP條目與其他虛擬主機條目中的內容完全相同。那麼,爲什麼它在另一個虛擬主機條目上的根目錄上工作,而不是作爲主虛擬主機上的子目錄呢?
Halp!
我已經閱讀了5個小時前的這篇文章:) http://alex.eftimie.ro/2013/03/21/how-to-run-flask-application-in-a-subpath-using-apache-mod_proxy / – alexef