我將 Apache 設定為我的 Web 伺服器,並且 Tomcat 透過 掛鉤到 Apache mod_jk
,因此使用者永遠不會與 Tomcat 互動。
我已經在 Apache 上設定了 SSL,並且可以使用 來存取它https://localhost
,但是當我嘗試在 處存取我的應用程式時https://localhost/app
,出現directory not found
錯誤。
問題是當我使用常規 http 時,我可以很好地實現它:http://localhost/app
我必須編輯什麼才能使此連接正常工作?
- 我已取消註解 AJP 連接器
server.xml
- 我已將我的虛擬主機新增至
httpd.conf
我缺什麼?
答案1
Apache 將 http 和 https 視為不同的虛擬伺服器。您是否在兩個虛擬主機下都設定了反向代理?
答案2
您需要將您的設定從 http 複製到 https - 如果您有 http 連接器,則不需要 ajp 連接器
看看它是如何設定的 - 可能它執行代理傳遞或使用 RewriteRule ,末尾帶有 P ,這是代理。
答案3
您對工人的定義可能是錯誤的。檢查workers.properties 的工作類型。如果是 ajp13,請按原樣取消 Tomcat 中 ajp 部分的註解。 mod_jk 通常使用 ajp13 作為類型。
答案4
如果使用mod_jk,則需要Tomcat中的AJP連接器。
在大多數情況下,如果工作程序出現設定問題,Apache 將回答 500 錯誤(伺服器錯誤)。如果收到 404,這是因為請求未傳遞到 Tomcat 伺服器(或從 Tomcat 的角度來看 URL 無效)。檢查 Apache 配置中的 JkMount 是否存在且正確(對於 443 連接埠)。
若要偵錯 mod_jk 的問題,請開啟 mod_jk 中的偵錯日誌並查看 Apache 日誌。在 mod_jk 配置(一般為 jk.conf)中加入以下行:
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel 調試
您應該在啟動時看到一些日誌以及每個請求的一些有趣的詳細資訊。
我為 Apache2 + SSL + JBoss 做了這種設定。您可以在以下位置找到其他詳細資訊和優化提示: 在生產環境中的 Apache 伺服器後面部署 J2EE 應用程式