Apache-2.2
Glassfish 前的 Apache:https(443) 上的 mod_jk
在glassfish 前使用Apache http 伺服器的建議(檢查問題)之後,我使用了以下教程 並使其工作,但僅在埠 80 上工作。
我的意思是現在我可以輸入:
www.mydomain.com
它執行。但是,如果我執行一個需要 https 的應用程序,即在 web.xml 中(一個 J2EE 應用程序)
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
當我輸入:
www.mydomain.com
它會自動載入:
https://www.mydomain.com:8181
我不想顯示埠 8181,我只想:https://www.mydomain.com。
PS:我將只使用一個在上下文 “/” 中執行的應用程序。
以下是我的配置:
- workers.properties文件:
worker.list=ajp13unsecure, ajp13secure worker.ajp13unsecure.type=ajp13 worker.ajp13unsecure.host=localhost worker.ajp13unsecure.port=8009 worker.ajp13secure.type=ajp13 worker.ajp13secure.host=localhost worker.ajp13secure.port=8009
*我添加的 httpd.conf文件:
Listen 443 # Load mod_jk module # Update this path to match your modules location LoadModule jk_module modules/mod_jk.so # Where to find workers.properties # Update this path to match your conf directory location (put workers.properties next to httpd.conf) JkWorkersFile conf/workers.properties # Where to put jk logs # Update this path to match your logs directory location (put mod_jk.log next to access_log) # This can be commented out, to disable logging JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] # Only matters if JkLogFile is being used. JkLogLevel debug # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send everything for context /examples to worker named worker1 (ajp13) # /examples would most likely be the name of your WebApp (c:/tomcat/webapps/example) JkMount /* ajp13secure # Should mod_jk send SSL information (default is On) JkExtractSSL On # What is the indicator for SSL (default is HTTPS) JkHTTPSIndicator HTTPS # What is the indicator for SSL session (default is SSL_SESSION_ID) JkSESSIONIndicator SSL_SESSION_ID # What is the indicator for client SSL cipher suit (default is SSL_CIPHER) JkCIPHERIndicator SSL_CIPHER # What is the indicator for the client SSL certificated? (default is SSL_CLIENT_CERT) JkCERTSIndicator SSL_CLIENT_CERT
問題:
我缺少什麼以使埠 8181 不再出現在 URL 中?
另外,正如我所說的 SSL 證書已經安裝在 glassfish 中,我必須將它安裝在 Apache 中還是可以這樣?
PS:我正在使用
- 玻璃魚 v3.0.1
- 視窗伺服器 2008 r2
- 阿帕奇 v2.2
- 我已經****在 glassfish 密鑰庫中安裝了一個 Godaddy SSL 證書。它工作並且執行良好。
這是您的應用程序發出重定向以強制您通過 SSL 連接的結果。問題是因為 glassfish 現在在代理後面,所以應用程序不知道它執行的埠不是人們應該使用的埠。在某個地方,應該有配置來覆蓋要使用的埠。
這個特定問題的簡單解決方案是使用 Apache 而不是 Java 來處理強制人們使用 SSL,您可以使用mod_rewrite來做到這一點:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
也就是說,真正的解決方案是弄清楚 URL 重定向的來源以及可以做些什麼來重新配置它。此問題可能會出現在您的應用創建 URL 的其他地方,例如使用者註冊電子郵件。
(免責聲明:我對 Glassfish/J2EE/所有這些繁瑣的小 Java 位如何組合在一起一無所知,所以我不確定這個 URL 是在該堆棧中的確切位置建構的,或者您必須更改什麼來修復它)