似乎無法讓 mod_jk 將 443 轉發到 tomcat?
我對 Apache 和 Tomcat 還很陌生,而且我發現自己在很多工作中都在使用它,所以我必須邊走邊學。我經常糾結的一件事是 mod_jk,而我現在遇到的一個問題讓我很困惑。
我正在嘗試使用 apache 將埠 443 上的所有流量轉發到安裝應用程序的 8443,但由於某種原因它沒有做它的事情。這是我目前在我的 vhosts 文件中的內容:
<VirtualHost *:443> DocumentRoot /opt/tomcat/tomcat6/webapps/StoreFront ServerName testbuilder2.domain.com ServerAdmin networksupport@domain.com ErrorLog /etc/httpd/logs/builder.error_log TransferLog /etc/httpd/logs/builder.transfer_log SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLCertificateFile /etc/httpd/conf/certs/*.domain.com.crt SSLCertificateKeyFile /etc/httpd/conf/certs/wildcardprivate.key SSLCertificateChainFile /etc/httpd/conf/certs/IntermediateCABundle.crt JkMount /* testbuilder2
我的workers.properties 看起來像這樣:
worker.list=testbuilder2,jk-status ########## Template Worker ########### worker.template1.type=ajp13 worker.template1.socket_keepalive=true worker.template1.ping_mode=A worker.template1.ping_timeout=10000 worker.template1.connection_pool_minsize=0 worker.template1.connection_pool_timeout=600 worker.template1.reply_timeout=300000 worker.template1.recovery_options=3 ######### Workers ################### # testbuilder2 worker.testbuilder2.reference=worker.template1 worker.testbuilder2.port=8009 worker.testbuilder2.host=localhost worker.testbuilder2.activation=A
mod_jk.conf:
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties # Ensure the following directory exists if not changed. JkShmFile /var/cache/httpd/mod_jk.shm JkLogFile logs/mod_jk.log JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
這一切對我來說都是正確的,但話又說回來,我很愚蠢。:p
這裡有什麼明顯的錯誤嗎?每當我訪問https://testbuilder2.domain.com時,它都會直接將我帶到 apache 歡迎螢幕。奇怪的是,我已經嘗試在埠 80 上設置它,並且它工作正常:
<VirtualHost *:80> DocumentRoot /opt/tomcat/tomcat6/webapps/StoreFront ServerName testbuilder2.domain.com ServerAdmin networksupport@domain.com ErrorLog /etc/httpd/logs/builder.error_log TransferLog /etc/httpd/logs/builder.transfer_log JkMount /* testbuilder2
使用它會導致它從任何 URL 載入我們的應用程序。所以我知道我擁有讓它工作所需的一切,我只是在做一些非常錯誤的事情。有任何想法嗎?
我在 CentOS Linux 版本 7.1.1503(核心)上,最小安裝,Apache 2.4,Tomcat 6。我認為是 Mod_jk 版本 1.2.40。
如果您在 Apache HTTPD 端使用 SSL,您可能希望在 Tomcat 上重定向到 8080。
在連接器集下的 Tomcat 的 server.xml 中
scheme="https" secure="true" proxyPort="443"
這告訴 tomcat 在埠 8080 上偵聽 HTTP(不是 HTTPS),但連接是“安全的”並使用 HTTPS 並告訴客戶端如果有推薦等使用埠 443。
編輯:看起來您可能想要重定向到 8009,如果是這樣,您正在使用 APR 並且需要在 Tomcat 的 server.xml 中編輯 APR 連接器,而不是埠 8080 上的普通 HTTP 連接器,但其餘部分仍然適用。
有關更多資訊,請參閱tomcat 文件