【问题标题】:Redirect tomcat to https using apache server (Windows)使用 apache 服务器将 tomcat 重定向到 https (Windows)
【发布时间】:2016-12-30 02:37:07
【问题描述】:

我需要先将 apache 服务器与 tomcat 集成,然后使用 localhost 中的 apache 将 http 请求重定向到 https。

说明:

  1. 我有一个在 tomcat 服务器上运行的 java web 开发项目。让网址为http://localhost:8080/myProject
  2. 我需要将我的 tomcat 服务器与 apache 服务器集成,以便 http://localhost/myProject 显示页面 http://localhost:8080/myProject
  3. 我需要添加安全证书并使其成为 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


【解决方案1】:

也许您的 Apache HTTPD 仅侦听端口 80,而当您请求 https://localhost/ 而不声明端口时,您的浏览器正在请求标准 https 端口 443。

所以,请检查您是在 httpd.conf 中同时监听端口 80 和 443 还是只监听 80。如果只有 80,在 Listen 语句中的监听语句中添加 443 应该可以解决问题

【讨论】:

  • 谢谢。在 httpd-ssl.conf 中添加了 listen 443。
【解决方案2】:

有一个标签 "默认:443>" 在 httpd-ssl.conf 文件中。 我在标签末尾添加了以下语句,它起作用了。

<VirtualHost _default_:443> 
    ....
    JkMount /myProject ajp13
    JkMount /myProject/* ajp13 
</VirtualHost>

【讨论】:

    【解决方案3】:

    这些配置非常简单。但是,在所有网站中,都缺少一个重要部分。即请将 virtualhosts 文件中定义的服务器名称与主机文件 C:/Program files x86/drivers/etc/hosts 中的 ipaddress 映射。 例如。 127.0.0.1 localhost(如果没有虚拟主机) 127.0.0.1 proxyportal.company.com(如果标签中的服务器名称是 proxyportal.company.com)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2021-04-14
      • 2014-06-02
      • 2017-10-21
      • 1970-01-01
      • 2022-08-22
      • 2012-04-13
      相关资源
      最近更新 更多