使用 apache 服务器 (Windows) 将 tomcat 重定向到 https
Redirect tomcat to https using apache server (Windows)
我需要先将 apache 服务器与 tomcat 集成,然后在本地主机中使用 apache 将 http 请求重定向到 https。
解释:
- 我在 tomcat 服务器上有一个 java 网络开发项目 运行。设 url 为 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 [R,L]
# Send everything for context /myProject to worker ajp13
JkMount /myProject ajp13
JkMount /myProject/* ajp13
面临的问题:
在删除行时,
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://localhost [R,L]
它成功地将页面显示为 http 请求。但是在添加该行时,尽管它重定向到 https 请求,但它会给出 "Not Found" 错误。我无法弄清楚如何纠正这个问题。我希望我能够解释这个问题。我是服务器和 Apache 模块的新手,所以这可能是一个非常蹩脚的问题,但请帮我解决这个问题。
也许您的 Apache HTTPD 只侦听端口 80,当您请求 https://localhost/ 而不声明端口时,您的浏览器正在请求标准 https 端口 443。
因此,请检查您是否正在监听 httpd.conf 中的端口 80 和 443 或仅监听 80。如果仅监听 80,在 Listen 语句中的 listen 语句中添加 443 应该可以解决问题
有一个标签
“默认:443>”
在 httpd-ssl.conf 文件中。
我在标记的末尾添加了以下语句,它起作用了。
<VirtualHost _default_:443>
....
JkMount /myProject ajp13
JkMount /myProject/* ajp13
</VirtualHost>
这些配置非常简单。但是,在所有网站中都缺少一个重要部分。即请将 virtualhosts 文件中定义的服务器名称映射到主机文件 C:/Program files x86/drivers/etc/hosts 中的 ipaddress。
例如。 127.0.0.1 localhost(如果没有虚拟主机)
127.0.0.1 proxyportal.company.com(如果标签中的服务器名称是 proxyportal.company.com)
我需要先将 apache 服务器与 tomcat 集成,然后在本地主机中使用 apache 将 http 请求重定向到 https。
解释:
- 我在 tomcat 服务器上有一个 java 网络开发项目 运行。设 url 为 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 [R,L]
# Send everything for context /myProject to worker ajp13
JkMount /myProject ajp13
JkMount /myProject/* ajp13
面临的问题: 在删除行时,
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://localhost [R,L]
它成功地将页面显示为 http 请求。但是在添加该行时,尽管它重定向到 https 请求,但它会给出 "Not Found" 错误。我无法弄清楚如何纠正这个问题。我希望我能够解释这个问题。我是服务器和 Apache 模块的新手,所以这可能是一个非常蹩脚的问题,但请帮我解决这个问题。
也许您的 Apache HTTPD 只侦听端口 80,当您请求 https://localhost/ 而不声明端口时,您的浏览器正在请求标准 https 端口 443。
因此,请检查您是否正在监听 httpd.conf 中的端口 80 和 443 或仅监听 80。如果仅监听 80,在 Listen 语句中的 listen 语句中添加 443 应该可以解决问题
有一个标签
“
<VirtualHost _default_:443>
....
JkMount /myProject ajp13
JkMount /myProject/* ajp13
</VirtualHost>
这些配置非常简单。但是,在所有网站中都缺少一个重要部分。即请将 virtualhosts 文件中定义的服务器名称映射到主机文件 C:/Program files x86/drivers/etc/hosts 中的 ipaddress。 例如。 127.0.0.1 localhost(如果没有虚拟主机) 127.0.0.1 proxyportal.company.com(如果标签中的服务器名称是 proxyportal.company.com)