【发布时间】:2016-12-30 02:37:07
【问题描述】:
我需要先将 apache 服务器与 tomcat 集成,然后使用 localhost 中的 apache 将 http 请求重定向到 https。
说明:
- 我有一个在 tomcat 服务器上运行的 java web 开发项目。让网址为http://localhost:8080/myProject
- 我需要将我的 tomcat 服务器与 apache 服务器集成,以便 http://localhost/myProject 显示页面 http://localhost:8080/myProject
- 我需要添加安全证书并使其成为 https 请求,即,如果我输入 http://localhost/myProject,它应该指向 https://localhost/myProject 并显示在 http://localhost:8080/myProject 中显示的页面。
我能够使用 mod_jk 成功集成两台服务器,并且我已经使用 mod_rewrite 并通过在 httpd-ssl.conf 文件中指定证书和密钥安装了自签名安全证书。 这是我包含在 httpd.conf 中的文件:
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module "C:/Program Files/BitNami WAMPStack/apache2/modules/mod_jk.so"
# Where to find workers.properties
# Update this path to match your conf directory location
JkWorkersFile C:/softwares/apache-tomcat-7.0.42/conf/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location
JkLogFile C:/MyProject/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the 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"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://localhost$1 [R,L]
# Send everything for context /myProject to worker ajp13
JkMount /myProject ajp13
JkMount /myProject/* ajp13
面临的问题: 在删除线条时,
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://localhost$1 [R,L]
它成功地将页面显示为 http 请求。但是在添加该行时,尽管它重定向到 https 请求,但它会给出“未找到”错误。我无法弄清楚如何纠正这个问题。我希望我能够解释这个问题。我是服务器和 apache 模块的新手,所以这可能是一个非常蹩脚的问题,但请帮我解决这个问题。
【问题讨论】:
-
哪些端口正在监听您的 Apache HTTPD 服务器?才80?
-
您的 httpd 配置看起来过于简单。通常你会有不同的
VirtualHost部分:一个用于端口 80,一个用于端口 443。另外,你绝对不想重定向到localhost:使用客户端用来联系你的主机名,或者使用HTTPS 服务器的正确 DNS 名称。
标签: apache tomcat mod-rewrite https mod-jk